Имея дело с курсорами, вам потребуется определить состояние вашего курсора. Ниже приведен список атрибутов курсора, которые вы можете использовать.
Атрибуты | Пояснения |
---|---|
%ISOPEN | - Возвращает TRUE если курсор открыт, FALSE если курсор закрыт. |
%FOUND | - Возвращает INVALID_CURSOR если курсор объявлен, но не открыт; или если курсор был закрыт. - Возвращает NULL если курсор открыт, но выборка не была выполнена. - Возвращает TRUE если выборка была удачно завершена. - Возвращает FALSE если нет возвращаемых строк. |
%NOTFOUND | - Возвращает INVALID_CURSOR если курсор объявлен, но не открыт; или если курсор был закрыт. - Return NULL если курсор открыт, но выборка не была выполнена. - Возвращает FALSE если выборка была удачно завершена. - Возвращает TRUE если нет возвращаемых строк. |
%ROWCOUNT | - Возвращает INVALID_CURSOR если курсор объявлен, но не открыт; или если курсор был закрыт. - Возвращает число возвращаемых строк. - Атрибут ROWCOUNT не дает реального количества строк, пока вы не пройдете весь курсор. Другими словами, вы не должны полагаться на этот атрибут, чтобы сказать, сколько строк в курсоре после его открытия. |
Далее приведен пример того, как можно использовать атрибут % NOTFOUND.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
CREATE OR REPLACE Function FindCourse ( name_in IN varchar2 ) RETURN number IS cnumber number; CURSOR c1 IS SELECT course_number FROM courses_tbl WHERE course_name = name_in; BEGIN open c1; fetch c1 into cnumber; if c1%notfound then cnumber := 9999; end if; close c1; RETURN cnumber; END; |