是否可以在动态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消息填充的集合。
答案 0 :(得分:0)
您应该可以执行类似
的操作EXECUTE IMMEDIATE
'SELECT COUNT(*) ' ||
' FROM TABLE( :1 ) ' ||
' WHERE ' || some_predicate
INTO v_cnt
USING v_tab_type;
希望无论你对谓词做什么,都会适当地使用绑定变量,特别是如果要经常调用它的话。