[pgsql-jp: 32959] PL/pgSQL で ROWTYPE の引数に値を渡す方法について

Akinori FUJII showten24 @ yahoo.co.jp
2004年 5月 17日 (月) 20:06:27 JST


初めて質問させていただきます。
藤井と申します。

PostgreSQL 7.3.4 にてPL/pgSQLのファンクションを作成しています。

ROWTYPEの引数を受けるファンクションを作成しましたが、
値の入れ方が判らず先に進めなくなってしまいました。

ちなみに以下のようなことをしてみました。
CREATE OR REPLACE FUNCTION func_name( table_name ) RETURNS BOOLEAN AS'
    ・・・

SELECT * FROM func_name( ( SELECT * FROM table_name WHERE table_name_pk = 1 )
) ;

この場合は次のようなエラーがでました。
ERROR:  Subselect must have only one field



参考にしたのはマニュアルの以下の例です。

PostgreSQL 7.3.4 プログラマガイド
Chapter 19. PL/pgSQL - SQL 手続き言語
19.3. 宣言
19.3.1. 関数引数の別名

CREATE FUNCTION use_many_fields(tablename) RETURNS TEXT AS '
DECLARE
    in_t ALIAS FOR $1;
BEGIN
    RETURN in_t.f1 || in_t.f3 || in_t.f5 || in_t.f7;
END;
' LANGUAGE 'plpgsql';

以上、ROWTYPEの引数にどうやって値を入れればよいか、
ご存知の方がいらっしゃいましたらご教授いただけないでしょうか。

藤井




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