游標(biāo)是從表中檢索出結(jié)果集,從中每次指向一條記錄進(jìn)行交互的機(jī)制。
作用
一個(gè)簡(jiǎn)單實(shí)用:
Declare -- 聲明游標(biāo) Cursor Mycur Is Select * From Emp; Empinfo Emp%Rowtype; Cou Number; Begin -- 游標(biāo)操作使用循環(huán),但是在操作之前必須先將游標(biāo)打開 For Empinfo In Mycur Loop Cou := Mycur%Rowcount; Dbms_Output.Put_Line('行號(hào):' || Cou || ' 雇員編號(hào):' || Empinfo.Empno || ' 雇員姓名:' || Empinfo.Ename); End Loop; End;
循環(huán)取出數(shù)據(jù)的兩種寫法:
Declare -- 聲明游標(biāo) Cursor Mycur Is Select * From Emp; -- List (EmpPo) Empinfo Emp%Rowtype; Cou Number; Begin -- 游標(biāo)操作使用循環(huán),但是在操作之前必須先將游標(biāo)打開 If Mycur%Isopen Then Null; Else Open Mycur; End If; -- 使游標(biāo)向下一行 Fetch Mycur Into Empinfo; -- 判斷此行是否有數(shù)據(jù)被發(fā)現(xiàn) While (Mycur%Found) Loop Cou := Mycur%Rowcount; Dbms_Output.Put_Line('行號(hào):' || Cou || ' 雇員編號(hào):' || Empinfo.Empno || ' 雇員姓名:' || Empinfo.Ename); -- 修改游標(biāo),繼續(xù)向下 Fetch Mycur Into Empinfo; End Loop; End;
第二種寫法:
Declare -- 聲明游標(biāo) Cursor Mycur Is Select * From Emp; Empinfo Emp%Rowtype; Cou Number; Begin -- 游標(biāo)操作使用循環(huán),但是在操作之前必須先將游標(biāo)打開 If Mycur%Isopen Then Null; Else Open Mycur; End If; Loop -- 使游標(biāo)向下一行 Fetch Mycur Into Empinfo; Exit When Mycur%Notfound; Cou := Mycur%Rowcount; Dbms_Output.Put_Line('行號(hào):' || Cou || ' 雇員編號(hào):' || Empinfo.Empno || ' 雇員姓名:' || Empinfo.Ename); End Loop; End;
在存儲(chǔ)過程中使用游標(biāo)
Create Or Replace Procedure Myproc(Oi_Return Out Integer) Is Cursor Mycur Is Select * From Emp_0915; Empinfo Emp_0915%Rowtype; Cou Number; Exc_Return Exception; -- 程序中間返回自定義異常 Begin If Mycur%Isopen Then Null; Else Open Mycur; End If; Loop Fetch Mycur Into Empinfo; Exit When Mycur%Notfound; Cou := Mycur%Rowcount; Dbms_Output.Put_Line(Cou || '開始更新...'); Update Emp_0915 t Set t.Sal = t.Sal + 1 Where t.Empno = Empinfo.Empno; Dbms_Output.Put_Line(Cou || '更新結(jié)束...'); End Loop; Commit; Oi_Return := 1; Exception When Exc_Return Then Rollback; Oi_Return := 0; End;
在oracle中測(cè)試:
Declare Re Integer; Begin Myproc(Re); If Re = 1 Then Dbms_Output.Put_Line(Re || ':執(zhí)行結(jié)束。。。'); Else Dbms_Output.Put_Line(Re || ':執(zhí)行錯(cuò)誤_______'); End If; End;
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:泰安 河源 酒泉 柳州 銀川 梧州 南陽 焦作
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle游標(biāo)使用參考語句實(shí)例解析》,本文關(guān)鍵詞 Oracle,游標(biāo),使用,參考,語句,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。