В этом учебном материале вы узнаете, как использовать оператор WHERE CURRENT OF в Oracle/PLSQL c синтаксисом и примерами.
Описание
Если вы планируете обновлять или удалять записи, на которые ссылается оператор SELECT FOR UPDATE, вы можете использовать оператор WHERE CURRENT OF.
Синтаксис
UPDATE имя_таблицы
SET set_clause
WHERE CURRENT OF имя_курсора;
SET set_clause
WHERE CURRENT OF имя_курсора;
или
DELETE FROM имя_таблицы
WHERE CURRENT OF имя_курсора;
WHERE CURRENT OF имя_курсора;
Примечание
- Оператор WHERE CURRENT OF позволяет обновить или удалить запись, которая была в курсоре последней.
ПРИМЕР
Обновление (updating) с помощью оператора WHERE CURRENT OF
В этом примере мы обновляем записи с помощью оператора WHERE CURRENT OF
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 27 28 29 30 31 32 33 34 35 |
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 FOR UPDATE of instructor; BEGIN OPEN c1; FETCH c1 INTO cnumber; if c1%notfound then cnumber := 9999; else UPDATE courses_tbl SET instructor = 'SMITH' WHERE CURRENT OF c1; COMMIT; end if; CLOSE c1; RETURN cnumber; END; |
Удаление (Deleting) с помощью оператора WHERE CURRENT OF
В этом примере мы удаляем записи с помощью оператора WHERE CURRENT OF
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 27 28 29 30 31 32 33 34 |
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 FOR UPDATE of instructor; BEGIN open c1; fetch c1 into cnumber; if c1%notfound then cnumber := 9999; else DELETE FROM courses_tbl WHERE CURRENT OF c1; COMMIT; end if; close c1; RETURN cnumber; END; |