Where Current Of
توضیحات
اگر بخواهیم رکوردی که با دستور select for update ، lock شده است را update یا delete کنیم باید از دستور where current of استفاده کنیم.
دستور
دستور where current of را اینگونه میتوان استفاده کرد:
| ۱۲۳۴۵۶ | UPDATE table_name SET set_clause WHERE CURRENT OF cursor_name; DELETE FROM table_nameWHERE CURRENT OF cursor_name; |
مثال
مثالهایی از استفاده where current of:
| ۱۲۳۴۵۶۷۸۹۱۰۱۱۱۲۱۳۱۴۱۵۱۶۱۷۱۸۱۹۲۰۲۱۲۲۲۳۲۴۲۵۲۶۲۷۲۸۲۹۳۰۳۱۳۲۳۳۳۴۳۵۳۶۳۷۳۸۳۹۴۰۴۱۴۲۴۳۴۴۴۵۴۶۴۷۴۸۴۹۵۰۵۱۵۲۵۳۵۴۵۵۵۶۵۷۵۸۵۹۶۰۶۱۶۲۶۳۶۴۶۵۶۶۶۷۶۸۶۹۷۰۷۱ | CREATE OR REPLACE Function FindCourse ( name_in IN varchar۲ ) RETURN numberIS cnumber number; CURSOR c۱ IS SELECT course_number FROM courses_tbl WHERE course_name = name_in FOR UPDATE of instructor; BEGIN OPEN c۱; FETCH c۱ INTO cnumber; if c۱%notfound then cnumber := ۹۹۹۹; else UPDATE courses_tbl SET instructor = \'SMITH\' WHERE CURRENT OF c۱; COMMIT; end if; CLOSE c۱; RETURN cnumber; END; CREATE OR REPLACE Function FindCourse ( name_in IN varchar۲ ) RETURN numberIS cnumber number; CURSOR c۱ IS SELECT course_number from courses_tbl where course_name = name_in FOR UPDATE of instructor; BEGIN open c۱; fetch c۱ into cnumber; if c۱%notfound then cnumber := ۹۹۹۹; else DELETE FROM courses_tbl WHERE CURRENT OF c۱; COMMIT; end if; close c۱; RETURN cnumber; END; |
