ORACLE游標的應用

2021-07-11 01:30:36 字數 2479 閱讀 7964

在oracle資料庫中,可以使用游標瀏覽資料、更新資料和刪除資料,接下來列舉以幾個簡單的例子

通過使用游標既可以逐行檢索結果集中的記錄,又可以更新或刪除當前游標行的資料如果要通過游標更新或刪除資料,在定義游標時必須要帶有for update子句其語句格式如下:

cursor cursor_name is select_statement

for update[ of column_reference] [nowait];

1.瀏覽資料

set serveroutput on 

declare 

--宣告變數和游標

v_specialty students.specialty%type;

v_sname students.name%type;

v_dob students.dob%type;

cursor students_cur

is select name,specialty 

from students

where specialty=v_specialty;

begin

v_specialty:='&specialty';

open students_cur;

dbms_output.put_line('學生姓名出生日期');

loop

fetch students_cur into v_sname,v_dob;

exit when students_cur%notfound;

dbms_output.put_line(v_sname||''||v_dob);

end loop;

close students_cur;

end;

/

2.更新資料update語句的格式

update table_name set ... where current of cursor_name;
declare 

--宣告變數和游標

v_title teachers.title%type;

cursor teachers_cur

is select title

from teachers

for update;

begin

open teachers_cur;

loop

fetch teachers_cur into v_title;

exit when teachers_cur%notfound;

case

when v_title='教授' then

update teachers

set wage = 1.1 * wage where current of teachers_cur;

when v_title='高工' then

update teachers

set wage = 1.05 * wage where current of teachers_cur;

else

update teachers

set wage = wage+100 where current of teachers_cur;

end case;

end loop;

close teachers_cur;

end;

/

3.刪除資料

delete語句的格式

delete from table_name where current of cursor_name;
declare 

--宣告變數和游標

v_specialty students.specialty%type;

v_sname students.name%type;

cursor students_cur

is select name,specialty

from students

for update;

begin

open stduents_cur;

fetch students_cur into v_sname,v_specialty;

while students_cur%found loop

if v_specialty = 'cs' then

delete from students where current of students_cur;

end if;

fetch stduents_cur into v_sname,v_specialty;

end loop;

close students_cur;

end;

/

以上內容參考其他書籍的例子所寫

游標的簡單應用

使用游標前資料 declare loginid varchar 50 declare loginpass varchar 50 declare cursor1 cursor for 定義游標cursor1 select loginid,loginpassword from users where l...

oracle游標的使用

當select語句從資料庫中返回的記錄多餘一條時,就可以使用游標 cursor 游標可以理解為一次訪問乙個的一組記錄。select語句將列提取到游標中,然後根據游標取得記錄。使用游標時需要遵從以下的5個步驟 1 宣告一些變數,用於儲存select語句返回列值 2 宣告游標,並制定select語句 3...

Oracle游標的問題

游標 cursor 是oracle系統在記憶體中開闢的乙個工作區,在其中存放select語句返回的查詢集 他是乙個查詢結果集,相當於快取 游標內有指標 在游標所定義的工作區中,存在著乙個指標 pointer 在初始狀態它指向查詢結果的首記錄。當指標放置到某行後,即可對該行資料進行操作。對游標的操作有...