Oracle中的游標分為顯示游標和隱式游標。

創新互聯-專業網站定制、快速模板網站建設、高性價比秦皇島網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式秦皇島網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋秦皇島地區。費用合理售后完善,十余年實體公司更值得信賴。
顯示游標:
顯示游標是用cursor...is命令定義的游標,它可以對查詢語句(select)返回的多條記錄進行處理;顯示游標的操作:打開游標、操作游標、關閉游標;
隱式游標:
隱式游標是在執行插入(insert)、刪除(delete)、修改(update)和返回單條記錄的查詢(select)語句時由PL/SQL自動定義的。PL/SQL隱式地打開SQL游標,并在它內部處理SQL語句,然后關閉它。
1.游標定義:
cursor XXXA is
SELECT 語句;
XXXB cursorName%rowtype;
XXXA: 游標名
XXXB: 游標行數據定義
2. 打開游標:
-- 打開之前最好先關一下,防止上次發生異常沒有關掉而引發不必要的異常
IF XXXA%ISOPEN THEN
CLOSE XXXA;
END IF;
Open XXXA ;
Loop
Fetch XXXA into XXXB;
exit when XXXA%NOTFOUND;
... ... 處理邏輯
end loop;
close XXXA;
一 游標是什么
游標字面理解就是游動的光標。
用數據庫語言來描述:游標是映射在結果集中一行數據上的位置實體,有了游標,用戶就可以訪問結果集中的任意一行數據了,將游標放置到某行后,即可對該行數據進行操作,例如提取當前行的數據等。
二 游標的分類
顯式游標和隱式游標
顯式游標的使用需要4步:
1. 聲明游標
CURSOR mycur(vartype number) is
select emp_no,emp_zc from cus_emp_basic
where com_no = vartype;
2. 打開游標
open mycur(000627)
注:000627是參數
3. 讀取數據
fetch mycur into varno, varprice;
4. 關閉游標
close mycur;
三 游標的屬性
oracle 游標有4個屬性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。
%ISOPEN判斷游標是否被打開,如果打開%ISOPEN等于true,否則等于false;
%FOUND %NOTFOUND判斷游標所在的行是否有效,如果有效,則%FOUNDD等于true,否則等于false;
%ROWCOUNT返回當前位置為止游標讀取的記錄行數。
四 示例
set serveroutput on;
declare
varno varchar2(20);
varprice varchar2(20);
CURSOR mycur(vartype number) is
select emp_no,emp_zc from cus_emp_basic
where com_no = vartype;
begin
if mycur%isopen = false then
open mycur(000627);
end if;
fetch mycur into varno,varprice;
while mycur%found
loop
dbms_output.put_line(varno||','||varprice);
if mycur%rowcount=2 then
exit;
end if;
fetch mycur into varno,varprice;
end loop;
close mycur;
end;
PL/SQL記錄的結構和C語言中的結構體類似,是由一組數據項構成的邏輯單元。
PL/SQL記錄并不保存在數據庫中,它與變量一樣,保存在內存空間中,在使用記錄時候,要首先定義記錄結構,然后聲明記錄變量。可以把PL/SQL記錄看作是一個用戶自定義的數據類型。
set serveroutput on;
declare
type person is record
(
empno cus_emp_basic.emp_no%type,
empzc cus_emp_basic.emp_zc%type);
person1 person;
cursor mycur(vartype number)is
select emp_no,emp_zc from cus_emp_basic
where com_no=vartype;
begin
if mycur%isopen = false then
open mycur(000627);
end if;
loop
fetch mycur into person1;
exit when mycur%notfound;
dbms_output.put_line('雇員編號:'||person1.empno||',地址:'||person1.empzc);
end loop;
close mycur;
end;
典型游標for 循環
游標for循環示顯示游標的一種快捷使用方式,它使用for循環依次讀取結果集中的行數據,當form循環開始時,游標自動打開(不需要open),每循環一次系統自動讀取游標當前行的數據(不需要fetch),當退出for循環時,游標被自動關閉(不需要使用close)。使用游標for循環的時候不能使用open語句,fetch語句和close語句,否則會產生錯誤。
set serveroutput on;
declare
cursor mycur(vartype number)is
select emp_no,emp_zc from cus_emp_basic
where com_no=vartype;
begin
for person in mycur(000627) loop
dbms_output.put_line('雇員編號:'||person.emp_no||',地址:'||person.emp_zc);
end loop;
end;
標題名稱:oracle如何聲明游標 oracle游標的用法
當前網址:http://www.yijiale78.com/article48/hihchp.html
成都網站建設公司_創新互聯,為您提供網站內鏈、靜態網站、移動網站建設、電子商務、微信公眾號、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯