使用动态SQL的TABLE函数?

时间:2014-04-09 03:07:46

标签: oracle10g dynamic-sql execute-immediate table-functions

是否可以在动态SQL中使用TABLE函数?

当我在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消息填充的集合。

1 个答案:

答案 0 :(得分:0)

您应该可以执行类似

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

希望无论你对谓词做什么,都会适当地使用绑定变量,特别是如果要经常调用它的话。