[pgsql-jp: 34048] Re: ユーザ定義データ型を引数とした関数をpsql で呼び出す方法について
    Tatsuo Ishii
    t-ishii @ sra.co.jp
       
    2004年 9月 28日 (火) 22:37:19 JST
    
    
  
石井です.
> ユーザ定義データ型を引数とした関数をpsqlで呼び出す方法を
> ご存知の方がいらっしゃいましたらご教授いただけませんか?
1) Cでinput/output関数をちゃんと作る
2) CREATE TYPEではなく,テーブルを作ってテーブル経由で引数を渡す
3) ユーザ定義データ型を返す関数を作る
1)が一番まともだと思いますが,面倒ならば3)が良いでしょう.例を示します.
CREATE TYPE TP_SAMPLE AS(
 AAAA INT4,
 BBBB VARCHAR(256)
);
CREATE OR REPLACE FUNCTION FNC_TEST(TP_SAMPLE) RETURNS INT4 AS '
BEGIN
RAISE NOTICE ''AAAA: %'', $1.AAAA;
RAISE NOTICE ''BBBB: %'', $1.BBBB;
RETURN 100;
END;
'LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION FNC_TEST2(INT4, VARCHAR) RETURNS TP_SAMPLE AS '
SELECT $1,$2;
'LANGUAGE sql;
test=# SELECT fnc_test(fnc_test2(1,'aaa'));
NOTICE:  AAAA: 1
NOTICE:  BBBB: aaa
 fnc_test 
----------
      100
(1 row)
    
    
pgsql-jp メーリングリストの案内