#oracle #plsql #oracle-sqldeveloper
#Oracle #plsql #oracle-sqldeveloper
Вопрос:
Я хочу отобразить все last_name
из моей employees
таблицы в этой процедуре.
Ошибка: ORA-01422: Request returns more than the requested number of lines
Код:
CREATE OR REPLACE PROCEDURE writeAllEmployees AS
lastn employees.last_name%TYPE;
BEGIN
SELECT last_name INTO lastn FROM employees;
DBMS_OUTPUT.PUT_LINE(lastn);
END;
/
EXEC writeAllEmployees;
Ответ №1:
Поскольку в таблице более одной строки, вам понадобится цикл:
CREATE OR REPLACE PROCEDURE writeAllEmployees AS
BEGIN
for cur_r in (SELECT last_name FROM employees) loop
DBMS_OUTPUT.PUT_LINE(cur_r.last_name);
end loop;
END;
/
EXEC writeAllEmployees;
Не забудьте включить serveroutput; в некоторых инструментах это выполняется set serveroutput on
.
Комментарии:
1. lastn не объявлено. Не знаю, почему
2. Ах, извините, не обратил на это внимания. Исправлено; посмотрите, пожалуйста.