Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 参数处于条件中的Pl sql游标_Oracle_Plsql - Fatal编程技术网

Oracle 参数处于条件中的Pl sql游标

Oracle 参数处于条件中的Pl sql游标,oracle,plsql,Oracle,Plsql,假设我有一个带有用户输入参数的过程 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不是有效的标识符 那么,executeim

假设我有一个带有用户输入参数的过程

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不是有效的标识符

那么,executeimmediate是这里唯一的选项吗

“我正在尝试传递列名”

在这种情况下,是的,您需要使用动态SQL。您可能需要打开一个游标变量,而不是执行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||')';

您是要在此处传入列名还是文字?如果
V\u MATCH\u ID
是一个列名,那么是的,您需要使用execute immediate(或DBMS\u SQL)。@Ben是的,我正在尝试传递列名。我不知道要将此作为重复项来结束,因为您可能要做的事情太多了,但这里有一些相关的问题:,