回答
爲了得到一個函數的定義使用pg_get_functiondef()
:
select pg_get_functiondef(oid)
from pg_proc
where proname = 'foo';
有類似的功能檢索索引,視圖,規則等的定義。有關詳細信息,請參閱手冊:http://www.postgresql.org/docs/current/static/functions-info.html
獲取用戶類型的定義有點棘手。您將需要查詢information_schema.attributes
爲:
select attribute_name, data_type
from information_schema.attributes
where udt_schema = 'public'
and udt_name = 'footype'
order by ordinal_postion;
從您需要重新組裝create type
聲明。
有關詳細信息,您將需要通過系統目錄中的文檔閱讀:http://www.postgresql.org/docs/current/static/catalogs.html
但是,你應該更喜歡information_schema
的意見,如果他們返回相同的信息。
感謝您的回覆。我的數據庫中有大約8個用戶類型,但是當我查看information_schema.attributes時,有0行。任何想法? – John
@John:不知道。你能發佈這些類型的定義嗎?要獲得更多詳細信息,請參閱Erwin的建議並使用-E開關啓動psql以查看它正在使用哪些statemtents。很可能涉及pg_type和pg_attribute。 –
你會發現psql -E
有助於你尋求這些查詢。
它顯示查詢psql
在執行反斜槓命令時使用 - 有關此函數的詳細信息,如\df+ myfunc
。
下面是使用pg_get_functiondef一個完整的示例查詢:
WITH funcs AS (
SELECT
n.nspname AS schema
,proname AS sproc_name
,proargnames AS arg_names
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
FROM pg_proc p
JOIN pg_type t on p.prorettype = t.oid
JOIN pg_description d on p.oid = d.objoid
JOIN pg_namespace n on n.oid = p.pronamespace
WHERE n.nspname = 'some_schema_name_here'
)
SELECT *
FROM funcs
;;
注意,很顯然你應該指定架構名稱,(或「公共」如果您正在使用該架構)
請注意,我更喜歡這種格式,因爲我可以使用此查詢來搜索描述(我的基本功能文檔)或函數定義中包含特定文本的函數。 –
- 1. 如何在PostgreSQL中描述SQL查詢的列(獲取它們的名稱,數據類型等)
- 2. SQL Server查詢獲取表中所有列的數據類型?
- 3. 如何在SQL Server 2008 R2中使用SQL查詢獲取用戶定義的類型定義?
- 4. 在Postgresql擴展中獲取用戶定義的類型OID C
- 5. SQL,獲取所有自定義數據類型的列表
- 6. PostgreSQL:從C函數獲取nextvalue序列
- 7. 查詢模塊以獲取函數/類型列表
- 8. 獲取LINQ的子查詢到一個用戶定義類型
- 9. Wordpress SQL查詢獲取自定義帖子類型中的meta_key名稱
- 10. PostgreSQL的使用自定義類型
- 11. 通過SQL查詢從BIT類型列中獲取布爾值
- 12. NHibernate - 使用自定義sql查詢列
- 13. 如何從使用PostgreSQL的查詢中獲取列屬性?
- 14. 使用SQL查詢獲取列名稱
- 15. Postgresql:在用戶定義的類型中使用的send函數是什麼?
- 16. 定義一個函數並在SQL查詢中使用它
- 17. Rails的:獲取PostgreSQL表列類型
- 18. 確定PostgreSQL中的列數據類型
- 19. 顯示查詢結果列類型(PostgreSQL)
- 20. 如何使用PL-SQL獲取Oracle中的列數據類型
- 21. SQL查詢使用PostgreSQL
- 22. 獲取使用SQL查詢
- 23. 自定義postgresql的查詢
- 24. 如何從sql查詢中獲取每種類型的「分數」列表?
- 25. 在LINQ查詢中調用SQL用戶定義的函數
- 26. 從自定義查詢中獲取wordpress類別列表
- 27. T-SQL:如何通過ID獲取用戶定義的列的數據類型?
- 28. 如何從PostgreSQL查詢中獲取列名和類型(不運行它)?
- 29. 使用S3通用函數獲取數據類型列表
- 30. 使用組獲取自定義類型的新列表
對於單一功能的看'\ ef'其中「以」CREATE FUNCTION命令「的形式編輯[a]函數」(http://www.postgresql.org/docs/9.3/static/app-psql.html) –