• ベストアンサー

動的SQLよりファンクションをコールできますか?

PL/SQLで教えていただきたいのです。 (1)動的SQLより、ファンクションをコールできますか? (2)もしできるなら、どういった書式になるのでしょうか? 以下のようなコードを書いていますが、2行目でコンパイルエラーになってしまいます。 vs2Sql := 'SELECT a.CLM1,' || FunctionXXX(a.CLM1) || ' AS CLM2 ' || 'FROM TargetTBL a WHERE ...'; よろしくお願いいたします。

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

  • ベストアンサー
  • fazan
  • ベストアンサー率33% (5/15)
回答No.1

2行目のファンクションの部分も文字列にしてはどうですか? vs2Sql := 'SELECT a.CLM1,' || 'FunctionXXX(a.CLM1)' || ' AS CLM2 ' || 'FROM TargetTBL a WHERE ...';

sugar_donut
質問者

お礼

回答ありがとうございます。 会社からの帰りの電車の中で、「もしかしたらファンクションも文字列で渡しちゃう(回答くださった内容のことです)のかも」などと考えていましたが、本当にそうだったのですね。 助かりました。やってみます。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

何を動的SQL側で処理したいのか整理できていますか? SQLを見る限り・・ 「SELECT a.CLM1,FunctionXXX(a.CLM1) AS CLM2 FROM TargetTBL a WHERE ...」というSQLを 投げたいのだと思います。 なので、素直に vs2Sql:='SELECT a.CLM1,FunctionXXX(a.CLM1) AS CLM2 FROM TargetTBL a WHERE ...'; とすれば良いと思いますが。

sugar_donut
質問者

お礼

回答ありがとうございます。 おっしゃられる通り、ファンクションも文字列にして試してみたいと思います。 動的にしたいのは実際はWHERE句以下なのですが、今回の質問には不要と考えましたので、あえて省いて質問させていただきました。 今月に入ってPL/SQLを始めましたもので文法がよくわからず、とんちんかんな質問になってしまったかと思います。「動的SQLの中で変数の使用」等のサンプルは見つかったのですが、関数のコールについてのものを見つけられなくて・・・。 おかげさまで助かりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A