對顯式游標 隱式游標的理解

2021-10-01 07:22:37 字數 3650 閱讀 6782

顯式游標主要是用於對查詢語句的處理,尤其是在查詢結果為多條記錄的情況下。

1、建立測試表,插入 測試資料

2、編寫儲存過程

create or replace procedure printstudent(sname in out varchar,sage in varchar)

as resultcount number; ----這裡is,as都可以

begin

select count(1) into resultcount from student1;

if(resultcount = 4) then

resultcount := 4;

dbms_output.put_line(『has 4 student』);

else

resultcount := 1;

dbms_output.put_line(『has 1 student』);

end if;

exception

----這裡寫異常處理資訊,常用處理方法when then—when others then—end;

when too_many_rows then

dbms_output.put_line(『返回值多於1行』);

when others then

dbms_output.put_line(『在printstudent過程**錯!』);

end;

3、編寫顯式游標呼叫儲存過程

–顯式游標的使用

declare

cursor c4(tname varchar,tage number) --申明游標

isselect sname,sage from student1 where sname = tname and sage = tage;

v_emp_record c4%rowtype;

counts number; --計數器

begin

counts := 0;

open c4(『zhangsan』,12); --開啟游標

loop

fetch c4 into v_emp_record;

if c4%found then

dbms_output.put_line(counts ||』 『|| v_emp_record.sname || 』 的年齡是:』 || v_emp_record.sage);

counts := counts +1;

else

dbms_output.put_line(counts ||』 『||『已處理』 );

counts := counts +1;

exit when c4%notfound;

end if;

end loop;

close c4; --關閉游標

4、使用for迴圈 loop 游標

declare

cursor c4(tage number) --申明游標

isselect sname,sage from student1 where sage < tage;

counts number; --計數器

begin

counts := 0;

for everyc in c4(19) loop

dbms_output.put_line(counts ||』 『|| everyc.sname || 』 的年齡是:』 || everyc.sage);

for迴圈語句,自動執行游標的open、fetch、close語句和迴圈語句的功能;

1、進入迴圈,自動開啟游標,並提取一行資料;

2、程式處理完提取的資料,游標自動轉移下一行資料;

3、迴圈結束,游標自動關閉。

對於非查詢語句,如修改、刪除操作,則由oracle 系統自動地為這些操作設定游標並建立其工作區,隱式游標的名字為sql,這是由oracle 系統定義的。

對於隱式游標的操作,如定義、開啟、取值及關閉操作,都由oracle 系統自動地完成,無需使用者進行處理。使用者只能通過隱式游標的相關屬性,來完成相應的操作。在隱式游標的工作區中,所存放的資料是與使用者自定義的顯示游標無關的、最新處理的一條sql 語句所包含的資料。

格式呼叫為: sql%

–隱式游標

declare

v_rows number;

begin

update student1 set sage = 22 where sname = 『zhangsan』;

v_rows := sql%rowcount;

dbms_output.put_line(『更新了』 || v_rows||『行』);

理解游標(3)隱式游標的使用

當我們執行dml或select into時,pl sql引擎會為我們宣告乙個隱式游標並管理這個游標 之所以謂之 隱式 是因為和游標相關的工作資料庫已經替我們自動做好了 我們使用隱式游標,實際就是期待返回一行,這裡有乙個原則 對於單行記錄查詢,我們應該總是將它封裝到乙個位於包裡的函式,把這個查詢隱藏在...

Oracle隱式游標和顯式游標

oracle隱式游標和顯式游標,游標是什麼?就是在記憶體開闢的一塊臨時儲存空間。1.1oracle有常用的哪些隱式游標 1.2 oracle隱式游標演示 隱式游標 使用的表為oracle預設自帶的emp表 sql rowcount 影響記錄條數 sql found 是否有滿足條件的記錄 set se...

游標的定義 顯示游標 隱式游標語法

游標的定義 1.顯示游標 普通顯示游標 帶引數 cursor c pi month varchar2,file type varchar2 is select item id,item title from item where month id pi month 不帶引數 cursor c is ...