ストアドプロシージャ/関数をどのように表示しますか?
元の定義のない古い関数があるとします-pg/psqlで何をしているのかを見たいのですが、それを行う方法がわからないようです。
postgresバージョン8.4.1を使用
ストアドプロシージャのソースを取得するには、pgAdminまたは pg_proc を使用します。 pgAdminも同様です。
\df+ <function_name>
in psql 。
\ef <function_name>
psqlで。関数全体に編集可能なテキストを提供します。
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
これは、関数を呼び出す方法を関数ハンドラーに伝えます。実装言語/呼び出し規約に応じて、インタープリター言語の関数の実際のソースコード、リンクシンボル、ファイル名、またはその他のほぼすべてのコードになります。
\df
を使用して、Postgresのすべてのストアドプロシージャを一覧表示します。
カタログテーブルをすばやくクエリしてpg_get_functiondef()
関数を使用する方法を疑問に思う方は、サンプルクエリをご覧ください。
SELECT n.nspname AS schema
,proname AS fname
,proargnames AS args
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
-- ,CASE WHEN NOT p.proisagg THEN pg_get_functiondef(p.oid)
-- ELSE 'pg_get_functiondef() can''t be used with aggregate functions'
-- END as definition
FROM pg_proc p
JOIN pg_type t
ON p.prorettype = t.oid
LEFT OUTER
JOIN pg_description d
ON p.oid = d.objoid
LEFT OUTER
JOIN pg_namespace n
ON n.oid = p.pronamespace
WHERE NOT p.proisagg
AND n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
通常、 pgAdmin のようなDBマネージャーアプリケーションを使用し、目的のオブジェクトを参照し、「スクリプトを作成する」などの方法で右クリックします。
管理アプリなしでこれを実行しようとしていますか?
システムで設定されている場合は、phpPgAdminで取得することもできます。
ステップ1:データベースを選択する
ステップ2:検索ボタンをクリック
ステップ3:検索オプションを機能に変更し、[検索]をクリックします。
定義された関数のリストを取得します。名前で関数を検索することもできます。この回答が他の人にも役立つことを願っています。