[pgsql-jp: 29103] Re: ユーザ定義ファンクションの一覧取得
sugita @ sra.co.jp
sugita @ sra.co.jp
2003年 2月 18日 (火) 14:18:19 JST
杉田です。
From: matsuda <yumatuda @ msoft.co.jp>
Subject: [pgsql-jp: 29095] Re: ユーザ定義ファンクションの一覧取得
Date: Tue, 18 Feb 2003 11:36:25 +0900
;;; ********* QUERY **********
;;; SELECT format_type(p.prorettype, NULL) as "Result data type",
;;; p.proname as "Name",
;;; oidvectortypes(p.proargtypes) as "Argument data types"
;;; FROM pg_proc p
;;; WHERE p.prorettype <> 0 AND (pronargs = 0 OR oidvectortypes(p.proargtypes) <> '')
;;; ORDER BY 2, 1, 3;
;;; **************************
;;;
;;; を確認する事が出来ました。そして、
...
;;; select * from pg_database;
;;; で、datlastsysoidも取得したのですが、datlastsysoidと何を比較すれば良いのでしょうか?
関数の oid を以下のように比較すると initdb の後に作成されたオブジェクトのみ、
つまり、この場合には、ユーザが作成した関数が選択できます。
SELECT format_type(p.prorettype, NULL) as "Result data type",
p.proname as "Name",
oidvectortypes(p.proargtypes) as "Argument data types"
FROM pg_proc p
WHERE p.prorettype <> 0 AND (pronargs = 0 OR oidvectortypes(p.proargtypes) <> '')
=> AND
=> p.oid > (SELECT datlastsysoid FROM pg_database WHERE datname = 'template1')
ORDER BY 2, 1, 3;
実行すると、
$ psql -f f.sql
Result data type | Name | Argument data types
------------------+------+---------------------
integer | one |
(1 row)
$
;;; #やっぱり頭にusr_とか付けとけば簡単にSELECT出来たんだろうなあ・・・
# それは、綺麗でないので、したくないですね、、、
Kenji Sugita
pgsql-jp メーリングリストの案内