Имея дело с курсорами, вам потребуется определить состояние вашего курсора. Ниже приведен список атрибутов курсора, которые вы можете использовать.
| Атрибуты | Пояснения |
|---|---|
| %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; |