2009-10-13 14 views
65

PostgreSQLでは、可能であれば、SELECT文だけを使用してテーブルを使用してすべてのストアドファンクション/ストアドプロシージャの名前を一覧表示する方法は簡単です。単純なSELECTが不十分な場合、私はストアドファンクションを使用して行うことができます。PostgreSQLのテーブルを参照するストアド関数をリストする

私の質問は、私が思うに、この他の質問に似ていますが、この他の質問は、SQL Server 2005のためのものです:
List of Stored Procedure from Table

(オプション)そのことについて、どのようにもトリガをリストアップしますし、同じテーブルを同じ方法で使用する制約?システムのものを除く

+6

あなたは回答を受け入れるかもしれません。 – John

+1

[PostgreSQLのテーブル**を使用してストアドファンクションをリストする](http://stackoverflow.com/questions/31166303/how-to-get-a-list-of-stored-procedures-using-a-specific- table-in-postgresql/31168357#31168357) – klin

答えて

4

:あなたはあなたのデータベースに関するメタデータを取得するための標準的なinformation_schemaスキーマを使用することができます

select proname from pg_proc where proowner <> 1; 
+1

なぜ<> 1ですか?私のPostgreSQLのインストールでは、システムプロシージャーは1ではなく10の所有者を持っています。 – bortzmeyer

+0

私はそれを知らなかった。もちろん解決策は、それに応じて「1」を変更することです。 – windyjonas

88
SELECT p.proname 
FROM pg_catalog.pg_namespace n 
JOIN pg_catalog.pg_proc p 
ON  p.pronamespace = n.oid 
WHERE n.nspname = 'public' 
+1

LukášLalinskýが答えて指摘したように、PostgreSQLは標準の 'information_schema.routines'をサポートしています。 –

+0

セミコロンがありません; – knutole

5

(それは別のデータベース・システムで同じように動作するはずですので、それは、SQL標準であります)。この場合、information_schema.routinesが必要です。

+0

便利ですが、質問に本当に答えません。 –

4

私のrecipeを見てください。関数とトリガを読み込みます。私はそこに引数名を追加した以外、Extracting META information from PostgreSQL (INFORMATION_SCHEMA) @quassnoiと@davidwhthomas同じ

+0

ありがとう、これは働いた。 SELECT pg_catalog.pg_get_functiondef( 'functionName' :: regproc)と組み合わせると、create文も取得できます。 – Wulfhart

+0

Extraction META ...リンクは私にとってはうまくいきました。私は今まで "レシピ"リンクを見ていませんでした。 – Wulfhart

+1

2番目のリンクが無効です。 :-(最初のリンクの内容をこの答えに組み込んで、暗闇の中に残さないようにしてください。ありがとう。 –

16
SELECT proname, prosrc 
FROM pg_catalog.pg_namespace n 
JOIN pg_catalog.pg_proc p 
ON  pronamespace = n.oid 
WHERE nspname = 'public'; 
+0

次回は、小さなものを変えるのではなく、自分の上の投稿を単に編集することもあります –

9

:それはからの情報に基づいて

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を追加することで、私は該当FUを構築することができますよドロップの名前。

また、機能を評価する際には、より完全な画像を確認することができます。

13

あなたはpsqlを使用している場合は、manページから\df

を試してみてください:\dfは舞台裏で実行されているものを明らかにする\set ECHO_HIDDENを実行

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. 

引数の型ALTERで関数を参照するときに必要とされる機能、の取得するための

関連する問題