【问题标题】:PL SQL: printing list from code block. I receive 'anonymous block completed' with heading but no resultsPL SQL:从代码块打印列表。我收到带有标题但没有结果的“匿名块已完成”
【发布时间】:2016-10-03 15:34:44
【问题描述】:

我不确定为什么我的第二个 DBMS_OUTPUT.OUT_LINE 没有打印出我的列表?我收到匿名块已完成,标题(等级:婴儿姓名:)打印出来,但我请求的列表没有。这是我的代码:

SET SERVEROUTPUT ON
SET VERIFY OFF;

DECLARE

V_SEARCH VARCHAR2(20):= '&SV_SEARCH';
V_ROWS NUMBER(11) := '&SV_ROWS';

CURSOR C_NAME IS
    SELECT RANK() OVER (ORDER BY CODE DESC)
    FROM (SELECT * FROM "NAME_LIST" WHERE "NAMES" LIKE (V_SEARCH) 
    ORDER BY CODE DESC)WHERE ROWNUM = V_ROWS;

R_NAME C_NAME%ROWTYPE;

BEGIN
    OPEN C_NAME;
    DBMS_OUTPUT.PUT_LINE('RANK:   BABY NAMES:');
    LOOP
    FETCH C_NAME INTO R_NAME;
        EXIT WHEN C_NAME%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(' '||V_ROWS||' '||V_SEARCH);
    END LOOP;
    CLOSE C_NAME;
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Error'); 
END;

结果我收到了这个作为我的输出: 匿名块完成 排名:宝贝名字:

【问题讨论】:

  • 也许你的光标没有返回任何行?

标签: plsql dbms-output


【解决方案1】:

我会自行运行您的游标查询来验证您是否正在获取数据。我的猜测是你最后的 ROWNUM 导致你没有提取数据。试试这个游标查询:

CURSOR C_NAME IS
SELECT RANK() OVER (ORDER BY CODE DESC)
FROM (SELECT ROWNUM AS RN, NL.* FROM "NAME_LIST" NL WHERE "NAMES" LIKE (V_SEARCH) 
ORDER BY CODE DESC)WHERE RN = V_ROWS;

【讨论】:

    【解决方案2】:

    ROWNUM=1 或者它不如某物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      相关资源
      最近更新 更多