資料庫中游標的使用

2022-10-11 06:51:13 字數 2060 閱讀 2675

1. 為何使用游標:

使用游標(cursor)的乙個主要的原因就是把集合操作轉換成單個記錄處理方式。用sql語言從資料庫中檢索資料後,結果放在記憶體的一塊區域中,且結果往往是乙個含有多個記錄的集合。游標機制允許使用者在sql server內逐行地訪問這些記錄,按照使用者自己的意願來顯示和處理這些記錄。

2. 如何使用游標:

一般地,使用游標都遵循下列的常規步驟:

(1)  宣告游標。把游標與t-sql語句的結果集聯絡起來。

(2)  開啟游標。

(3)  使用游標運算元據。

(4)  關閉游標。

2.1. 宣告游標

declare cursor語句sql-92標準語法格式:

declare 游標名 [ insensitive ] [ scroll ] cursor

for  sql-statement

eg:

declare mycrsrvar  cursor

for select *  from tbmydata

2.2  開啟游標

open mycrsrvar

當游標被開啟時,行指標將指向該游標集第1行之前,如果要讀取游標集中的第1行資料,必須移動行指標使其指向第1行。就本例而言,可以使用下列操作讀取第1行資料:

fetch first from e1cursor

或 fetch next from e1cursor

2.3      使用游標運算元據   

下面的示例用@@fetch_status控制在乙個while迴圈中的游標活動

/* 使用游標讀取資料的操作如下。*/

declare e1cursor cursor      /* 宣告游標,預設為forward_only游標 */

for select * from c_example

open e1cursor                /* 開啟游標 */

fetch next from e1cursor     /* 讀取第1行資料*/

while @@fetch_status = 0     /* 用while迴圈控制游標活動 */

begin

fetch next from e1cursor   /* 在迴圈體內將讀取其餘行資料 */

end

close e1cursor               /* 關閉游標 */

deallocate e1cursor          /* 刪除游標 */

2.4     關閉游標

使用close語句關閉游標

close | 游標變數名 }

使用deallocate語句刪除游標,其語法格式如下:

deallocate | @游標變數名

3.  fetch操作的簡明語法如下:

fetch

[ next | prior | first | last]

from

[ into @變數名 [,…] ]

引數說明:

next   取下一行的資料,並把下一行作為當前行(遞增)。由於開啟游標後,行指標是指向該游標第1行之前,所以第一次執行fetch next操作將取得游標集中的第1行資料。next為預設的游標提取選項。

into @變數名[,…]  把提取操作的列資料放到區域性變數中。列表中的各個變數從左到右與游標結果集中的相應列相關聯。各變數的資料型別必須與相應的結果列的資料型別匹配或是結果列資料型別所支援的隱性轉換。變數的數目必須與游標選擇列表中的列的數目一致。

每執行乙個fetch操作之後,通常都要檢視一下全域性變數@@fetch_status中的狀態值,以此判斷fetch操作是否成功。該變數有三種狀態值:

・  0  表示成功執行fetch語句。

・ -1  表示fetch語句失敗,例如移動行指標使其超出了結果集。

・ -2  表示被提取的行不存在。

由於@@fetch_statu是全域性變數,在乙個連線上的所有游標都可能影響該變數的值。因此,在執行一條fetch語句後,必須在對另一游標執行另一fetch 語句之前測試該變數的值才能作出正確的判斷。

oracle資料庫中游標的使用

游標,查詢並列印乙個的姓名和薪水 1.游標的屬性 found,notfound declare 定義乙個游標 cursor cemp is select ename,sal from emp 為游標定義對應變數 pename emp.ename type psal emp.sal type begi...

資料庫游標的應用

關聯式資料庫中的操作會對整個行集產生影響。由select語句返回的行集包括所有滿足該語句where子句中條件的行,由語句所返回的完整的行集被稱為結果集。應用程式,特別是互動式聯機應用程式,並不總能將整個結果集作為乙個單元來有效地處理,這些應用程式需要一種機制以便每次處理一行或一部分行,游標就是提供這...

資料庫游標的編寫

1 定義游標 declare 游標名 cur youbiao cursor fast forward for select from 表名 fast forward 最快的游標 2 開啟游標 open 游標名 cur youbiao 2.1 對游標的操作 將每條資料讀取並輸出 2.1.1將游標向後移...