通過使用顯示游標,不僅可以一行一行地處理select語句的結果,而且也可以更新或刪除當前游標行的資料。注意,如果要通過游標更新或刪除資料,在定義游標時必須要帶有for update 子句,語法如下:
cursor cursor_name is select ...for update;
在提取了游標資料之後,為了更新或刪除當前游標行資料,必須在update或delete語句中引用where current of子句,語法如下:
update table_name set column=...where current of cursor_name;
delete table_name where current of cursor_name;
下面以給工資低於2000的雇員增加100元工資為例,說明使用顯示游標更新資料的方法。示例如下:
declare
cursor emp_cursor is
select ename,sal from emp for update;
v_ename emp.ename%type;--定義變數
v_sal emp.sal%type;
begin
open emp_cursor;--開啟游標
loop
fetch emp_cursor into v_ename,v_sal;--提取游標資料賦值給變數
exit when emp_cursor%notfound;
if v_sal <2000 then --當變數v_sal 小於2000時執行更新操作
update emp set sal=sal+100 where currentof emp_cursor;
end if ;
end loop;
close emp_cursor;--關閉游標
end;
下面以解雇部門號為30的所有雇員為例,說明使用顯示游標刪除資料的方法,示例如下:
declare
cursor emp_cursor is
select ename,sal ,deptno from emp for update;
v_ename emp.ename%type;--定義變數
v_sal emp.sal%type;
v_deptno emp.deptno%type;
begin
open emp_cursor;--開啟游標
loop
fetch emp_cursor into v_ename,v_sal,v_deptno;--提取游標資料賦值給變數
exit when emp_cursor%notfound;
if v_deptno =30 then --當變數v_deptno等於30時執行刪除操作
delete from emp where current of emp_cursor;
end if ;
end loop;
close emp_cursor;--關閉游標
end;
Oracle 引數 游標 游標更新刪除資料
一 引數游標 引數游標是帶有引數的游標,在定義引數游標之後,當使用不同引數值多次開啟游標時,可以產生不同的結果集,語法如下 cursor cursor name parameter name datatype is select statement 定義引數游標時,游標引數只能指定資料型別,而不能指...
Oracle游標的for與fetch
使用隱式游標和顯式游標 1.查詢返回單行記錄時 隱式游標 2.查詢返回多行記錄並逐行進行處理時 顯式游標 顯示游標屬性 declare cursor cur emp is select from emp row emp cur emp rowtype begin open cur emp fetch...
ORACLE游標的應用
在oracle資料庫中,可以使用游標瀏覽資料 更新資料和刪除資料,接下來列舉以幾個簡單的例子 通過使用游標既可以逐行檢索結果集中的記錄,又可以更新或刪除當前游標行的資料如果要通過游標更新或刪除資料,在定義游標時必須要帶有for update子句其語句格式如下 cursor cursor name i...