假设我有一个带有用户输入参数的过程。
Create procedure Match_Record(v_match_ID)
Cursor match is
Select *
From table A
Where not exists(select ‘bbb’ from table B
Where a. v_match_ID = b. v_match_ID);
它不会编译,因为v_match_ID不是有效的标识符。
那么立即执行是唯一的选择吗?
答案 0 :(得分:1)
“我正在尝试传递列名”
在这种情况下,是的,您需要使用动态SQL。可能你需要打开游标变量而不是execute immediate
。
Create procedure Match_Record(v_match_ID)
...
rc sys_refcursor;
begin
open rc for
'Select *
From table A
Where not exists(select blah from table B
Where a.'||v_match_ID||' = b.'|| v_match_ID||')';