中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle cursor(靜態)記錄

發布時間:2020-06-19 23:00:48 來源:網絡 閱讀:620 作者:wolihaito 欄目:關系型數據庫

游標定義:
游標(Cursor)是處理數據的一種方法,為了查看或者處理結果集中的數據,游標提供了在結果集中一次一行或者多行前進或向后瀏覽數據的能力。可以把游標當作一個指針,利用游標可以返回它當前指向的行記錄(只能返回一行)若要返回多行,則需要不斷的滾動,把想要的數據全部查詢一遍。游標可以指定結果中的任何位置,然后允許用戶對指定位置的數據進行處理。
游標的優點:
1)允許程序對由查詢語句select返回的行集合中的每一行執行相同或不同的操作
,而不是對整個行集合執行同一個操作。
2)提供對基于游標位置的表中的行進行刪除和更新的能力。
游標的缺點:
在創建游標時,最需要考慮的事情是,“是否有辦法避免使用游標?” 因為游標的效率較差,如果游標操作的數據超過1萬行,那么就應該改寫; 如果使用了游標,就要盡量避免在游標循環中再進行表連接的操作。
靜態游標分為:
顯式游標和隱式游標
顯示游標部分:-->
1.游標的語法:
CURSOR cursor_name (parameter_name datatype) IS select...
2.顯示游標的使用步驟:
1.聲明游標 2.打開游標 3.讀取游標 4.關閉游標
3.顯示游標的四個屬性:
1.Cursorname%found
2.Cursorname%notfound
3.Cursorname%isopen
4.Cursorname%rowcount
4.顯示游標示例:
示例1:
declare
cursor c is select * from dj_djb where slbh like '201708%';
v_djb dj_djb%rowtype;
begin
open c;
loop
--exit when c%notfound;
if c%isopen then
dbms_output.put_line('游標已經打開!');
fetch c into v_djb;
exit when c%notfound;
dbms_output.put_line(v_djb.slbh);

dbms_output.enable(buffer_size=>null);
dbms_output.put_line(c%rowcount);
else
  dbms_output.put_line('游標未打開!');
  end if;
  end loop;

end;
示例2
使用: cursor for loop ......
declare
cursor c is select * from dj_djb where slbh like '201708%';
v_djb dj_djb%rowtype;
begin
for i in c loop
dbms_output.put_line(i.slbh);
dbms_output.put_line(c%rowcount);
end loop;
end;

使用 bulk collect into ....進行批量提取數據

declare
cursor c is select * from dj_djb where slbh like '201708%';
type v_djb_tmp is table of dj_djb%rowtype index by binary_integer;
v_djb v_djb_tmp;
begin
open c;
loop
fetch c bulk collect into v_djb limit 10;
for i in 1..v_djb.count loop
dbms_output.enable(buffer_size=>null);
dbms_output.put_line(v_djb(i).slbh||' 對應的行數:'||i);
end loop;
dbms_output.put_line(c%rowcount);
exit when c%notfound;
end loop;
close c;
end;
隱式游標部分-->
隱式游標則由則由系統自動定義,非顯示定義游標的DML語句即被賦予隱式游標屬性。其過程由oracle控制,完全自動化。隱式游標的名稱是SQL,不能對SQL游標顯式地執行OPEN,FETCH,CLOSE語句。
隱式游標的屬性:
類似于顯示游標,隱式游標同樣具有四種屬性,只不過隱式游標以SQL%開頭,而顯示游標以Cursor_name%開頭。通過SQL%總是只能訪問前一個DML操作或單行SELECT操作的游標屬性,用于判斷DML執行的狀態和結果,進而控制程序的流程。
SQL%ISOPEN :
游標是否打開。當執行select into ,insert update,delete時,Oracle會隱含地打開游標,且在該語句執行完畢或隱含地關閉游標,因為是隱式游標,故SQL%ISOPEN總是false
SQL%FOUND :
判斷SQL語句是否成功執行。當有作用行時則成功執行為true,否則為false。SQL%NOTFOUND :
判斷SQL語句是否成功執行。當有作用行時否其值為false,否則其值為true。
SQL%ROWCOUNT:
在執行任何DML語句之前,SQL%ROWCOUNT的值都是NULL。

                                                                                              by wolihaito  2018.03.26
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海阳市| 黑龙江省| 山阳县| 南通市| 鄂尔多斯市| 克什克腾旗| 黄冈市| 巩留县| 永新县| 达孜县| 敦煌市| 霍山县| 县级市| 驻马店市| 新晃| 阿尔山市| 大余县| 建阳市| 巴东县| 阿克陶县| 阿荣旗| 江阴市| 凤阳县| 武城县| 建瓯市| 金湖县| 阿合奇县| 贡嘎县| 新田县| 弋阳县| 浦东新区| 沁水县| 沙湾县| 梅州市| 龙游县| 彩票| 合江县| 通榆县| 若羌县| 民县| 北海市|