【问题标题】:Pl sql cursor with parameter in conditionPl sql游标在条件中带有参数
【发布时间】:2017-12-27 16:10:41
【问题描述】:

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

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

那么执行立即是这里唯一的选择吗?

【问题讨论】:

标签: oracle plsql


【解决方案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||')';

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多