Неявный курсор создается для инструкции SELECT, которая
· определяется в исполняемом разделе, а не в разделе объявлений
· содержит предложение INTO, которое является частью языка PL/SQL, а не SQL
· не требует открытия, выборки данных и закрытия.
SELECTсписок_столбцов [BULKCOLLECT] INTOсписок_переменных
. . . оставшаяся часть инструкции SELECT
DECLARE
l_sal sal%ROWTYPE;
BEGIN
SELECT * INTO l_sal FROM sal WHERE snum = 1001;
END;
Инструкция SELECTINTO (без BULKCOLLECT) должна возвращать одну строку. Oracle инициирует исключение, если
· по запросу не найдено ни одной строки – NO_DATA_FOUND
· возвращено несколько строк – TOO_MANY_ROWS
CREATE FUNCTION sal_name (p_SNum sal.snum%TYPE)
RETURN sal.sname%TYPE
IS
ret_val sal.sname%TYPE;
BEGIN
SELECT sname INTO ret_val FROM sal WHERE snum= p_SNum;
RETURN ret_val;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN null;
WHEN TOO_MANY_ROWS THEN
Save_log (‘Нарушение целостности для snum=’|| p_SNum);
RAISE;
END;
SQL%FOUND |
TRUE, если успешно выбрана одна строка (несколько строк для BULKCOLLECTINTO) |
SQL%NOTFOUND |
TRUE, если не выбрано ни одной строки (инициируется исключение NO_DATA_FOUND) |
SQL%ROWCOUNT |
Количество выбранных строк |
SQL%ISOPEN |
Всегда FALSE |
2. Явные курсоры
Явный курсор – это инструкция SELECT, явно определенная в разделе объявлений как курсор. При объявлении курсору присваивается имя.
Для INSERT, UPDATE и DELETE явные курсоры создавать нельзя.
2.1. Объявление явного курсора
CURSOR имя_курсора [(параметр [, параметр …])]
[RETURN спецификация_return ]
IS инструкция_SELECT
[ FOR UPDATE [ OF список_столбцов ] ];
· Курсор без параметров
CURSOR c_ord IS
SELECT odate FROM ord;
· Курсор с параметрами
CURSOR c_sal (p_SNum NUMBER) IS
SELECT sname FROM sal WHERE snum = p_SNum;
· Курсор с предложением RETURN
CURSOR c_cust RETURN cust%ROWTYPE IS
SELECT * FROM cust WHERE city = ’London’;
Курсор не является переменной. Это идентификатор запроса. Имени курсора нельзя присвоить значение и его нельзя использовать в выражениях.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.