【问题标题】:TABLE function with Dynamic SQL?带有动态 SQL 的 TABLE 函数?
【发布时间】:2014-04-09 03:07:46
【问题描述】:

动态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 消息填充的集合。

【问题讨论】:

  • 如果v_tab_type是一个已知类型的局部变量,你为什么要尝试使用动态SQL?
  • 只有在运行时才知道 where 条件..

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


【解决方案1】:

你应该能够做类似的事情

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

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

【讨论】:

  • 谢谢!这正是我想要的!
猜你喜欢
  • 2019-11-07
  • 2018-03-21
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多