Теория для лабораторной работы №5 - "PL/SQL – курсоры и хранимые процедуры", страница 10

Атрибуты курсора

Каждый курсор или курсорная переменная имеет четыре атрибута: %FOUND, %ISOPEN %NOTFOUND и %ROWCOUNT. Применяя их к курсорам или курсорным переменным, можно получить полезную информацию о выполнении утверждения манипулирования данными. Атрибуты курсора можно использовать в процедурных утверждениях, а не утверждениях SQL.    

Атрибуты явного курсора

Атрибуты явного курсора возвращают информацию о выполнении многострочного запроса. Когда явных курсор или курсорная переменная открываются, строки, удовлетворяющие соответствующему запросу выбираются из активного множества. Строки выбираются из активного множества по одной за раз.

 

 %FOUND

 

После того, как курсор или курсорная переменная открыты, но до первой выборки, %FOUND производит NULL. Затем, он производит TRUE, если последняя выборка возвратила строку, или FALSE иначе. В следующем примере %FOUND используется для выбора действия:  

 

LOOP

   FETCH c1 INTO my_ename, my_sal, my_hiredate;

   IF c1%FOUND THEN  -- выборка произошла

      ...

   ELSE  -- выборка не произошла, значит выход из цикла

      EXIT;

   END IF;

 

Если курсор или курсорная перемененная не открыты, %FOUND вызывает предопределённое исключение INVALID_CURSOR.

 

%ISOPEN

 

%ISOPEN производит TRUE, если курсор или курсорная перемененная открыты; иначе %ISOPEN производит FALSE. В следующем примере %ISOPEN используется для выбора действия:  

 

IF c1%ISOPEN THEN  -- курсор открыт

   ...

ELSE  -- курсор закрыт, значит откроем его

   OPEN c1;

END IF;

 

 %NOTFOUND

 

%NOTFOUND является логической противоположностью %FOUND. %NOTFOUND производит FALSE, если последняя выборка возвратила строку или TRUE иначе. В следующем примере %NOTFOUND используется для выхода из цикла, когда FETCH не возвращает ни одной строки:  

 

LOOP

   FETCH c1 INTO my_ename, my_sal, my_hiredate;

   EXIT WHEN c1%NOTFOUND;