цикл внутри хранимой процедуры всегда печатает последнее значение навсегда - PullRequest
0 голосов
/ 28 марта 2019

У меня есть доступ к базе данных, пока я изучаю pl / SQL.Поначалу это может показаться ошеломляющим, когда дело доходит до Oracle и банши.

Все, что я хочу сделать, - это цикл по содержимому того, что курсор выбирает из таблицы кандидатов, и распечатывание именизаявители.

Я еще не слишком знаком с синтаксисом, поэтому, возможно, что-то не так, но цикл печатается нормально до тех пор, пока не достигнет последнего значения, а затем просто печатает его вечно, пока не может выделить больше памяти.

Заранее спасибо и извините, если это глупый вопрос.

CREATE OR REPLACE PROCEDURE APPLICANTS IS
first_name APPLICANT.FNAME%TYPE;
CURSOR fnameCursor IS
SELECT FNAME
FROM APPLICANT
ORDER BY FNAME DESC;
BEGIN
OPEN fnameCursor;
LOOP
FETCH fnameCursor INTO first_name;
DBMS_OUTPUT.PUT_LINE(first_name);
END LOOP;
CLOSE fnameCursor;

END APPLICANTS;
/

EXECUTE APPLICANTS;

1 Ответ

3 голосов
/ 28 марта 2019

Вам необходимо условие EXIT в вашем цикле.

CREATE OR REPLACE PROCEDURE applicants IS
         first_name   applicant.fname%TYPE;
         CURSOR fnamecursor IS SELECT fname
                               FROM applicant
         ORDER BY fname DESC;
    BEGIN
         OPEN fnamecursor;
         LOOP
              FETCH fnamecursor INTO first_name;
              EXIT WHEN fnamecursor%NOTFOUND; -- This line is required.
              dbms_output.put_line(first_name);
         END LOOP;
         CLOSE fnamecursor;
    END applicants;
    /
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...