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