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;
/
Этот код не работает:подзапрос для получения лучших 3 ROWNUM не работает в PL/SQL
Ошибка в строке 2: ORA-06550: строка 2, столбец 17: PLS-00103: Встречающиеся символ «SELECT», когда ожидает одно из следующих действий: (; это вернуть символ «является» был заменен на «SELECT», чтобы продолжить
У вас есть ключевое слово 'IS', пропущенное в декларации курсора« EMPCUR ». Более того, в этой конкретной ситуации нет необходимости использовать 'ORDER BY ROWNUM'. –