PostgreSQL提供命令\ dv列出所有視圖。是否有類似的方式來列出所有用戶定義的函數或者可能只是由特定用戶定義的函數? \ sf要求你知道一個函數的名字,它會提供一個函數的定義。 \ df列出了所有功能(並且有很多)。我想要一種方法來顯示我定義的函數列表。有沒有辦法列出所有用戶定義的PostgreSQL函數?
1
A
回答
1
查找此類查詢的最佳方法是使用psql
和--echo-hidden
選項。然後運行psql
元命令,您將看到使用的查詢。
對於\df
是這樣的:
SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types",
CASE
WHEN p.proisagg THEN 'agg'
WHEN p.proiswindow THEN 'window'
WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN 'trigger'
ELSE 'normal'
END as "Type"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE pg_catalog.pg_function_is_visible(p.oid)
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
ORDER BY 1, 2, 4;
您可以通過例如調整該改變where子句:如果檢查the documentation of pg_proc
你會發現有一個proowner
列,所以你也可以運行
AND n.nspname = 'public'
即相當於\df public.*
:
SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types"
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_roles u ON u.oid = p.proowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE pg_catalog.pg_function_is_visible(p.oid)
AND n.nspname = 'public'
AND u.rolname = current_user --<< this limits the functions to those that the current user owns.
0
我不確定這個命令是否完全準確,但它似乎向我展示了特定角色擁有的所有功能:
SELECT routine_name, grantee FROM information_schema.routine_privileges WHERE grantee = '<role>';
無論如何,它給了我期望看到的結果。
相關問題
- 1. 有沒有辦法列出用戶的所有推文?
- 2. 有沒有辦法列出所有綁定到Ember.Object?
- 3. 有沒有辦法列出所有的C預處理器定義?
- 4. 有沒有辦法通過postgresql中的oid調用函數?
- 5. 有沒有辦法在matlab中定義一個通用函數?
- 6. 有沒有辦法列出用戶可以執行的所有命令(KSH)?
- 7. 有沒有辦法創建一個像這樣的用戶定義函數
- 8. R:有沒有辦法捕獲所有的函數參數值
- 9. 有沒有辦法自定義Sikuli的input()函數?
- 10. 有沒有辦法在Python中打印函數的定義
- 11. 有沒有辦法在iso映像中列出所有的rpms?
- 12. 有沒有辦法列出Intellij中項目中的所有類?
- 13. Amazon SimpleDB - 有沒有辦法列出域中的所有屬性?
- 14. 有沒有辦法列出所有的belongs_to關聯?
- 15. 有沒有辦法列出PostgreSQL服務器?
- 16. 有沒有辦法在jQuery中永久定義一個函數?
- 17. 有沒有辦法在emacs lisp中取消定義函數?
- 18. 有沒有辦法在函數中定義模型字段?
- 19. 有沒有辦法在python中自動定義一個函數?
- 20. 有沒有辦法確定JavaScript函數是否有副作用?
- 21. 有沒有辦法檢索具有特定密碼的所有用戶
- 22. QTP,有沒有辦法一次更改所有函數庫?
- 23. 有沒有辦法自定義JLabel?
- 24. 有沒有辦法自定義Sharekit?
- 25. 有沒有辦法列出Django信號?
- 26. 有沒有什麼辦法列出iphone
- 27. 有沒有辦法在build.sbt中定義所需的sbt版本?
- 28. 有沒有辦法使用stl函數上的Boost序列化
- 29. 數據庫中所有用戶定義函數的SQL列表
- 30. 有沒有辦法檢查出我的所有shell用戶已更改密碼