是否可以在动态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;
希望无论您对谓词做什么,都能适当地使用绑定变量,特别是在经常调用绑定变量的情况下。