TABLE函数与动态SQL



是否可以在动态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消息填充的集合。

您应该能够执行类似的操作

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

希望无论您对谓词做什么,都能适当地使用绑定变量,特别是在经常调用绑定变量的情况下。

相关内容

  • 没有找到相关文章

最新更新