oracle plsql参数化游标,其中的参数是用户输入的

omhiaaxx  于 2022-11-22  发布在  Oracle
关注(0)|答案(1)|浏览(141)

下面是我游标语句

cursor empCur(cname varchar2) is
        select empID, name
        from employee, country
        where lower(country_name) = lower(cname);

像这样打电话

countryName := '&countryname';
open empCur(countryName);
fetch empCur into ...

变量countryName与游标沿着声明,此查询运行良好,但没有获取任何数据。不知道我在这里遗漏了什么。

ctehm74n

ctehm74n1#

下面是一些示例数据:
A_表格
| 识别码|列_A|列B|
| - -|- -|- -|
| 工业工程师|2022年11月1日|一个|
| 英国|2022年11月2日|2个|
| 右前|2022年11月3日|三个|
| 信息技术|2022年11月4日|四个|
此代码工作...

SET SERVEROUTPUT ON
Declare
    CURSOR empCur(cname VarChar2) IS
        Select ID, COL_A, COL_B
        From A_TBL
        Where Lower(ID) = Lower(cname);
    cSet  empCur%ROWTYPE;
    countryName VarChar2(20);
Begin
    countryName := '&country';
    OPEN empCur(countryName);
    FETCH empCur Into cSet;
    CLOSE empCur;
    DBMS_OUTPUT.PUT_LINE('Country ID = ' || cSet.ID || '   *   Date = ' || To_Char(cSet.COL_A, 'dd.mm.yyyy') || '   *   Value = ' || cSet.COL_B);
End;
--
-- returning for input 'IE'
--
-- anonymous block completed
-- Country ID = IE   *   Date = 01.11.2022   *   Value = 1

是否检查了游标的FROM子句。employee表和country表之间没有联接条件。该条件或where条件(或两者)可能是未提取行的原因...
此致

相关问题