[pgsql-jp: 34047] ユーザ定義データ型を引数とした関数をpsqlで呼び出す方法について

tomoko sonobe moomoo @ fsinet.or.jp
2004年 9月 28日 (火) 01:44:32 JST


初めまして。園部と申します。

PL/pgSQLで、ユーザ定義データ型を引数とした関数を作成いたしましたが、
psqlで呼び出す場合の値のセットの仕方が判らず困っています。

ユーザ定義データ型はこのようなつくりです。
CREATE TYPE TP_SAMPLE AS(
 AAAA INT4,
 BBBB VARCHAR(256)
);

ファンクションはこのようなつくりです。
CREATE OR REPLACE FUNCTION FNC_TEST(TP_SAMPLE) RETURNS INT4 AS '
DECLARE
 ...
BEGIN
 ※ここで引数値を使ってinsert文を発行しています(あまり関係なさそう)。
 ...
 RETURN 0;
END;
'LANGUAGE plpgsql;

-------------------
--呼び出し失敗例1
-------------------
SELECT
 FNC_TEST(TP)
FROM
 TP_SAMPLE TP
WHERE TP.AAAA   = CAST(1 AS INT4)
 AND TP.BBBB  = CAST('TESTTEST' AS VARCHAR);

とすると、
"TP_SAMPLE" is a composite type
というエラーが発生します。

-------------------
--呼び出し失敗例2
-------------------
SELECT FNC_TEST(CAST(1 AS INT4),CAST('TESTTEST' AS VARCHAR));

とすると
No function matches the given name and argument types.
 You may need to add explicit type casts.
というエラーが発生します。

ユーザ定義データ型を引数とした関数をpsqlで呼び出す方法を
ご存知の方がいらっしゃいましたらご教授いただけませんか?

宜しくお願いいたします。

--
園部 




pgsql-jp メーリングリストの案内