簡単で簡単な質問:PostgreSQLでは、可能であれば、SELECTステートメントだけを使用してテーブルを使用して、すべてのストアドファンクション/ストアドプロシージャの名前をどのようにリストしますか?単純なSELECTで不十分な場合は、ストアド関数で間に合わせることができます。
私の質問は、この他の質問にいくらか似ていると思いますが、この他の質問はSQL Server 2005のものです。
テーブルのストアドプロシージャのリスト
(オプション)さらに言えば、同じ方法で同じテーブルを使用するトリガーと制約をどのようにリストしますか?
SELECT p.proname
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON p.pronamespace = n.oid
WHERE n.nspname = 'public';
SELECT proname, prosrc
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON pronamespace = n.oid
WHERE nspname = 'public';
Psqlを使用している場合は、\df
Manページから:
Tip
To look up functions taking arguments or returning values of a specific type, use your pager's search capability to scroll through the \df output.
ランニング \set ECHO_HIDDEN
は\df
は舞台裏で実行されています。
@quassnoiおよび@davidwhthomasと同じですが、引数名を追加しました。
SELECT proname, proargnames, prosrc
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON pronamespace = n.oid
WHERE nspname = 'public';
関数をリストする背後にある目的が、それらをクリーンアップするか、変化するparamsリストで新しい関数を反復することである場合、関数をドロップする必要が頻繁にあります。
DROP FUNCTION <name>(<args>);
Proargnamesを追加することにより、ドロップに適用可能な関数名を作成できます。
さらに、関数を評価するときに、より完全な図を見ることができます。
標準のinformation_schema
スキーマを使用して、データベースに関するメタデータを取得できます(SQL標準に含まれているため、異なるデータベースシステムで同じように機能するはずです)。この場合、 information_schema.routines
が必要です。
私の recipe を見てください。関数とトリガーを読み取ります。次の情報に基づいています。 PostgreSQLからのMETA情報の抽出(INFORMATION_SCHEMA)
システムのものを除く:
select proname from pg_proc where proowner <> 1;
関数の引数タイプを取得します。これは、[〜#〜] alterで関数を参照するときに必要です。 [〜#〜]-oldevectortypesを使用するとうまくいきました。
PostgreSQLの特定のスキーマのデータベースに保存されているすべての関数のリストを取得するにはどうすればよいですか? を参照してください。