PostgreSQL に格納されている PL/pgSQL 関数のソースを確認するメモです。
次の test という関数で確認してみます。
CREATE OR REPLACE FUNCTION test(f1 TEXT, f2 TEXT) RETURNS TEXT AS $$ DECLARE BEGIN RETURN 'This is a pen!'; END; $$ LANGUAGE PLPGSQL;
関数の情報が格納されている pg_proc カタログから取得します。 prosrc 列にソースが格納されています。
db=# SELECT prosrc FROM pg_proc WHERE proname = 'test'; prosrc ------------------------------ DECLARE BEGIN RETURN 'This is a pen!'; END; (1 row)
pg_proc カタログには 他にも色々な情報が格納されています。
db=# \x db=# SELECT * FROM pg_proc WHERE proname = 'test'; -[ RECORD 1 ]--+----------------------------- proname | test pronamespace | 27944 proowner | 16384 prolang | 34946 procost | 100 prorows | 0 proisagg | f prosecdef | f proisstrict | f proretset | f provolatile | v pronargs | 2 prorettype | 25 proargtypes | 25 25 proallargtypes | proargmodes | proargnames | {f1,f2} prosrc | : DECLARE : BEGIN : RETURN 'This is a pen!'; : END; : probin | - proconfig | proacl |
proargnames が引数の名前で proargtypes が引数のデータ型です。 prorettype は戻り値のデータ型です。
またもや関西限定の情報で、関西以外の方にはアレなのですが 7 月に LPIC の無料セミナーが 2 つあります。
7/11 大阪
『LPICレベル1技術解説無料セミナー』開催@大阪(7月11日)のお知らせ|Linux技術者認定機関 LPI-Japan
7/9 京都
オープンソースカンファレンス2010 Kansai@Kyoto - イベント案内 | 2010-07-09 (金): Linux技術者認定資格(LPIC)レベル2 技術解説セミナー