[pgsql-jp: 28606] pl/pgsqlのRECORD型
Hashimoto, Masaru
hashimoto-m @ comtecc.net
2003年 1月 8日 (水) 21:58:48 JST
橋本と申します。
いつもこちらにはお世話になっています。
pl/pgsqlについてご質問ですが、FORで取得した行の値を
別のROWTYPE変数に代入することは可能なのでしょうか。
現在は方法が分からなかったため、以下のサンプルのように
テーブルの項目ごとに代入しています。
ですが、これだとテーブルが変わったときにその部分も
修正する必要が出てしまいますので、まとめて代入できるのが
理想なのですが。
もし良い方法がありましたらご教授ください。
また、pl/pgsqlについて詳しく書かれている書籍や
サイトをご存知でしたら是非教えていただけますか。
どうぞよろしくお願いいたします。
====ここからサンプルコードです====
CREATE OR REPLACE FUNCTION c_test() RETURNS INTEGER AS '
DECLARE
wkROCORD RECORD;
wkROWTYPE t_test%ROWTYPE;
wkCnt INT4;
BEGIN
wkCnt := 0;
FOR wkROCORD IN SELECT * FROM t_test ORDER BY tel, postcode
LOOP
IF wkROCORD.tel = wkROWTYPE.tel
AND wkROCORD.postcode = wkROWTYPE.postcode THEN
wkCnt := wkCnt + 1;
END IF;
-- ここで全ての項目を代入しています。
wkROWTYPE.id := wkROCORD.id;
wkROWTYPE.name := wkROCORD.name;
wkROWTYPE.tel := wkROCORD.tel;
wkROWTYPE.postcode := wkROCORD.postcode;
wkROWTYPE.address := wkROCORD.address;
END LOOP;
RETURN wkCnt;
END;
' LANGUAGE 'plpgsql';
====
pgsql-jp メーリングリストの案内