[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 メーリングリストの案内