plsql程式設計學習之游標一

2021-08-31 09:04:05 字數 2618 閱讀 4060

oralce plsql程式設計的游標

游標分類

1顯示游標

2隱式游標

隱式游標,oracle自動管理,不用宣告,開啟和關閉,oracle自動處理,使用隱式游標%found時,需要加上 sql%found

顯示游標,需要自己宣告,開啟和關閉,使用%rowcount屬性時,需要在前面加上游標名字 ,student_cur%rowcount

2宣告游標

cursor cursor_name is select_statments;

開啟游標

open cursor_name

讀取資料

fetch cursor_name into variable_name,....variable_namen;

關閉游標

close cursor_name;

3游標屬性

%isopen

%found

%notfound

%rowcount

4游標讀取資料例項

select * from students;

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 ,dob 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;

5根據游標修改當前行資料,語法 update tablename set ....where current of cursor_name;

select * from teachers;

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='高工' or v_title='副教授' then

update teachers set wage=1.1*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;

commit;

end;

6根據游標刪除當前資料 delete from table where current of cursor_name;

select * from students;

declare

v_specialty students.specialty%type;

v_sname students.name%type;

cursor students_cur

is select name,specialty from students for update;

begin

open students_cur;

fetch students_cur into v_sname, v_specialty ;

while students_cur%found loop

if v_specialty ='計算機' then

delete from students where current of students_cur;

end if;

fetch students_cur into v_sname ,v_specialty;

end loop;

close students_cur;

end;

PL SQL語法之游標

本文介紹的是oracle中的游標型別有哪些,以及如何定義和使用各種型別的游標。在oracle中,游標可以分為顯示游標和隱式游標。先說隱式游標,隱式游標沒有語法上的定義,但在使用上卻是使用了游標的特性,所以被稱作隱式游標 顯示游標則又可以分為靜態游標,和動態游標 也稱ref游標 而動態游標又可以進一步...

Oracle修煉路程 PL SQL之游標的使用

概念 游標又名游標,是乙個pl sql結構,利用游標可以命名這些工作區,並通過游標訪問工作區中的資訊。語法 cursor 游標名 引數列表 isselect。屬性 isopen 判斷游標是否開啟,所以第一步開啟游標 rowcount 判斷游標已經獲取資料的行數 found 和 notfound 判斷...

plsql游標使用學習

設定伺服器端輸出plsql執行結果 set serveroutput on 宣告乙個顯式游標 宣告游標,開啟游標,讀取游標,關閉游標 declare 宣告部分 cursor myfirstcursor is select from emp myrowtype emp rowtype 宣告乙個查詢出來...