顯式游標主要是用於對查詢語句的處理,尤其是在查詢結果為多條記錄的情況下。
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 ...