Программа PL / SQL для отображения зарплат лучших сотрудников - PullRequest
0 голосов
/ 22 мая 2018
SET SERVEROUTPUT ON;

DECLARE
    CURSOR cemp
    IS
          SELECT esal
            FROM emp
        ORDER BY esal DESC;

    a     NUMBER (10) := &a;
    sal   emp.esal%TYPE;
BEGIN
    OPEN cemp;

    LOOP
        FETCH cemp INTO sal;

        DBMS_OUTPUT.put_line (sal);
        EXIT WHEN cemp%ROWCOUNT = a OR cemp%NOTFOUND;
    END LOOP;

    CLOSE cemp;
END;

Я написал вышеупомянутую программу pl / sql для отображения зарплат топовых сотрудников 'a'. Я выполнил код в sql developer. Но я не получаю никакого вывода. Есть ли что-то, что не так вкод

Ответы [ 2 ]

0 голосов
/ 15 июня 2018

Я сам нашел решение.

По-видимому, возникла некоторая проблема с использованием курсора.

Запрос можно упростить как:

SELECT * 
FROM 
 (
     SELECT EMPLOYEE, LAST_NAME, SALARY,
     RANK() OVER (ORDER BY SALARY DESC) emprank
     FROM emp
 )
WHERE emprank <= 3;
0 голосов
/ 01 июня 2018

Перейдите на вкладку «Вывод ДБМС», см. Прикрепленное изображение, затем нажмите «Включить вывод ДБМС»

dbms

...