【发布时间】:2013-11-27 16:22:15
【问题描述】:
DECLARE
CURSOR EMPCUR
SELECT EMPNO,ENAME,SAL,ROWNUM
FROM (SELECT *
FROM EMP
ORDER BY SAL DESC)
WHERE ROWNUM<=3
ORDER BY ROWNUM;
BEGIN
FOR EMPREC IN EMPCUR
LOOP
DBMS_OUTPUT.PUT_LINE('RANK '||EMPREC.ROWNUM);
DBMS_OUTPUT.PUT_LINE(EMPREC.EMONO||' - '||EMPREC.ENAME||' - '||EMPREC.SAL);
END LOOP;
END;
/
此代码不起作用:
第 2 行出现错误:ORA-06550:第 2 行,第 17 列:PLS-00103:遇到 预期以下之一时的符号“SELECT”:(;是返回 符号“is”被替换为“SELECT”以继续。
【问题讨论】:
-
您在
EMPCUR游标声明中遗漏了IS关键字。而且,在这种特殊情况下确实没有必要使用ORDER BY ROWNUM。
标签: sql oracle plsql subquery rownum