• ベストアンサー

postgres ストアドファンクションないのレコードの取得について

質問させていただきます pg/plsqlのストアドファンクション内で 受け取った引数を sql := select * from hoge; FOR rec IN EXECUTE sql LOOP return rec.col;     <<<この部分で END LOOP; return; rec.引数名のようにして 引数から取得した 列を指定したいのですが、そのまま入れると そのような列はありませんと言うような返事を 返されてしまいます。 うまくやる方法はないものでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 なるほど・・・です。 残念ながら動的SQLじゃないので、コンパイル時にカラムの整合性をチェックしに行きます。 なので、本当は実行時にだけ参照して欲しいというささやかな願いは、聞き入れてくれません・・・。 動的SQLを使用するように変更するか、レコード型を宣言し、明示カーソルループ(こんな言い方でいいのかな???)でレコード型に代入、型のカラムを返す。 などという方向転換が必要かと・・・。 (^^ゞ

VIPFIRE
質問者

お礼

こんにちは なるほど了解しました。 カーソルループのやりかたでやってみようと思います。 お返事ありがとうございました!

その他の回答 (1)

回答No.1

こんばんは。 >>引数から取得した列を指定したいのですが ??? 全体がつかめません・・・。 もう少しお願いします。 (^^ゞ

VIPFIRE
質問者

補足

わかりにくい文章で申し訳ありません。 「引数から取得した列を指定したいのですが」とは 引数で取得した文字列を rec.列名  の列名に代入して任意の列を取得したかったと言う意味なのです。 rec.$1 とか rec. || $1 のようにしては($1は引数名)うまくいかなかったのでこのような質問をさせていただきました。 よろしければまたお願いいたします。

関連するQ&A