как использовать атрибут sql курсора в oracle - PullRequest
0 голосов
/ 07 августа 2020

Я открываю sql курсор с именем lcaaa. внутри с этим курсором l oop я выполняю sql statenent в переменной. и я использую sql% found, чтобы получить информацию о результатах об этом sql statemnent (не sql курсоре)

OPEN lcaaa FOR SELECT Id, Searchvalue FROM bbb ;

LOOP
FETCH lcaaa INTO lnid, lcsearchvalue ;

EXIT  WHEN (lcaaa%NotFound);


     SELECT dd
     INTO a
     FROM aaa
        WHERE x=y 

    IF sql%found THEN

    END IF

END LOOP

, когда sql% found ложен, я получаю ошибку в этой процедуре. они говорят, что данные не найдены, и выходят l oop в sql курсоре.

oracle не поддерживает атрибут sql курсора (например, sql% found) встроенный курсор l oop?

1 Ответ

0 голосов
/ 07 августа 2020

Он поддерживает, и ошибка возникает не из-за или в точке, где вы используете sql%found, а из-за оператора select над ним. Dbfiddle с небольшим тестом

С официального сайта: здесь

If a SELECT INTO statement fails to return a row, PL/SQL raises the predefined exception NO_DATA_FOUND, whether you check SQL%NOTFOUND on the next line or not. A SELECT INTO statement that calls a SQL aggregate function never raises NO_DATA_FOUND, because those functions always return a value or a NULL. In such cases, SQL%NOTFOUND returns FALSE.

В приведенном выше утверждении говорится о sql%notfound то же самое для sql%found

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

...