前言:
oracle的對錶操作中有一種類似於dataset的物件操作方法cursor,它可以通過建立表的操作物件或者說表的指標物件來達到從表裡面提取資料的操作。
說明:一般通過sql語言可以針對某個表的某一行或多行資料進行操作比如說select,update等。這些操作必須以sql語句的語法格式來被直譯器解釋並執行。在實際變成中經常用到,特別是用程式語言來對資料庫操作時更是必不可少。當然資料庫也不是不能自己來做一些處理的,簡單的資料操作的話,像oracle這樣的資料庫可以用自身的pl/sql語言來實現。不僅執行速度快,而且節省網路。因為它是直接在資料庫端執行的。
cursor就是pl/sql中的一種實現對錶的物件化操作方法。
他一共分為兩種:
顯式型解釋:顧名思義,就是在程式書寫過程中利用建立表物件的過程中,明確的使用變數名。
暗式型解釋:不是用變數名,而用簡單的語法來完成物件的操作。oracle裡面已經定義好了,只需要呼叫就可以使用。
關於pl/sql的書寫格式,這裡省略。
顯式型的cursor在定義過程中必須寫在定義區間
也就是說需要寫在 is ..... begin 或者 declare .... begin。
而執行的時候就要寫在 begin.....end了。
看不明白的話,就看例子了。
create or replace procedure aaa首相建立了乙個procedure名字為aaa,然後在定義區間裡面定義了乙個cursor名字為bbb,iscursor bbb is
select ccc from table ;
vbbb bbb%rowtype;
begin
open bbb;
loop
fetch bbb into vbbb;
exit when bbb%notfound;
dbms_output.put_line(vbbb);
end loop;
close bbb;
end;
/
連線表table並從中讀取列ccc。之後定義了乙個行型別的變數用於儲存每一行的資料。
到此,表的物件以及讀取資料的條件還有資料儲存用的變數就都定義好了。
然後open這個表物件,進入迴圈。每迴圈一次指標便會自動向後移動,將bbb裡面的資料以行為單位讀出存入vbbb。然後當bbb的指標到最後也就是說資料讀到最後沒有了的時候便退出迴圈並且關閉bbb。
dbms_output.put_line是用來在螢幕上列印vbbb用的。
與之相同 open fetch close 的語法格式看來挺麻煩的。這樣的話就用for來代替也可以
begin這就省事多了。意思也一目了然。因為sursor定義了變來名字,用幾次也ok。for vbbb in bbb;
loop
dbms_output.put_line(vbbb)
;end loop;
end;
暗式型呢?
begin這屆這樣寫就行了,但是每次都要從寫。脫離了這個迴圈就沒辦法使用了。for vbbb in (select ccc from table)
loop
dbms_output.put_line(vbbb)
;end loop;
end;
因為程式用的都是大寫字母,看起來怪怪的。
Oracle Cursor游標的使用
1 宣告游標 2 開啟游標 3 逐行讀取游標中的資料,進行處理。4 關閉游標 open 開啟游標 found 判斷有沒有受影響的資料 notfound 判斷有沒有受影響的資料 isopen 判斷游標是否開啟 rowcount 返回受影響的行數 fetch 向下移動一步游標 close 關閉游標隱式游...
oracle cursor 學習小結
一 概念 游標 用來查詢資料庫,獲取記錄集合 結果集 的指標,可以讓開發者一次訪問一行結果集,在每條結果集上作操作。二 分類 1 靜態游標 分為顯式游標和隱式游標。2 ref 游標 是一種引用型別,類似於指標。三 詳細內容 1 顯式游標 cursor 游標名 引數 返回值型別 is select 語...
oracle cursor 學習小結
游標 用來查詢資料庫,獲取記錄集合 結果集 的指標,可以讓開發者一次訪問一行結果集,在每條結果集上作操作。二 分類 1 靜態游標 分為顯式游標和隱式游標。2 ref游標 是一種引用型別,類似於指標。三 詳細內容 1 顯式游標 cursor游標名 引數 返回值型別 is select語句 生命週期 a...