Вывод переменной результата из цикла Oracle - PullRequest
0 голосов
/ 25 апреля 2018

Я хотел бы вывести STATEMENT_NUMBER для каждой записи, где ID находится между 10 и 40

Я попытался написать следующее: -

DECLARE
    tempid       NUMBER := 10;
    tempresult   VARCHAR2(20);
BEGIN
    LOOP
        SELECT
            statement_number
        INTO
            tempresult
        FROM
            tblstatementsnew
        WHERE
            id = tempid;

        dbms_output.put_line(tempresult);
        tempid := tempid + 1;
        EXIT WHEN tempid = 40;
    END LOOP;
END;

.. но яполучить ошибку: -

* Причина: по объектам не найдено никаких данных.* Действие: не было данных от объектов, которые могут быть связаны с окончанием выборки.

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

1 Ответ

0 голосов
/ 25 апреля 2018

Надеюсь, ваш код сложнее, чем просто оператор печати. Но вместо этого рассмотрите использование неявного курсора:

BEGIN
    FOR v_tempresult IN (SELECT statement_number 
                           FROM tblstatementsnew 
                           WHERE id BETWEEN 10 AND 40)
    LOOP
        dbms_output.put_line(v_tempresult.statement_number);
    END LOOP;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...