0

TABLE動的 SQL で関数を使用することはできますか?

でテーブル オブ レコードを入力としてテーブル関数を使用すると、無効な識別子エラーが発生しますEXECUTE IMMEDIATE

次の SQL が機能しません。

EXECUTE IMMEDIATE 'SELECT COUNT(1) from TABLE(' || v_tab_type || ') WHERE ' || v_where_condn INTO v_cnt;

EXECUTE IMMEDIATE 'SELECT COUNT(1) from ' || TABLE(v_tab_type) || ') WHERE ' || v_where_condn INTO v_cnt;

v_tab_type は、Oracle AQ メッセージによって移入されるコレクションです。

4

1 に答える 1

0

あなたは次のようなことができるはずです

EXECUTE IMMEDIATE 
  'SELECT COUNT(*) ' ||
  '  FROM TABLE( :1 ) ' ||
  ' WHERE ' || some_predicate
  INTO v_cnt
 USING v_tab_type;

特にこれが頻繁に呼び出される場合は、述語で何をしていても、バインド変数を適切に使用することを願っています。

于 2014-04-09T04:59:32.543 に答える