-1

我不确定为什么我的第二个 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;

结果我收到了这个作为我的输出:匿名块完成排名:婴儿姓名:

4

2 回答 2

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;
于 2016-06-06T22:48:38.793 回答
-2

ROWNUM=1 或者它不如某物。

于 2018-04-02T16:49:33.863 回答