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. Но я не получаю никакого вывода. Есть ли что-то, что не так вкод
Я сам нашел решение.
По-видимому, возникла некоторая проблема с использованием курсора.
Запрос можно упростить как:
SELECT * FROM ( SELECT EMPLOYEE, LAST_NAME, SALARY, RANK() OVER (ORDER BY SALARY DESC) emprank FROM emp ) WHERE emprank <= 3;
Перейдите на вкладку «Вывод ДБМС», см. Прикрепленное изображение, затем нажмите «Включить вывод ДБМС»