SQL 必知必會 筆記 19 使用游標

2022-02-04 07:55:26 字數 2109 閱讀 4323

游標(cursor)是乙個儲存在dbms伺服器上的資料庫查詢,它不是一條select語句,而是被該語句檢索出來的結果集。在儲存了游標之後,應用程式可以根據需要滾動或瀏覽其中的資料。

使用游標的步驟:

在使用游標前,必須宣告(定義)它。這個過程實際上沒有檢索資料,它只是定義要使用的select語句和游標選項。

一旦宣告,就必須開啟游標以供使用。這個過程用前面定義的select語句把資料實際檢索出來。

對於填有資料的游標,根據需要取出(檢索)各行。

在結束游標使用時,必須關閉游標,可能的話,釋放游標(有賴於具體的dbms)。

宣告游標後,可根據需要頻繁地開啟和關閉游標。在游標開啟時,可根據需要頻繁地執行取操作。

1. 建立游標

在sql server中使用declare命名游標,並定義相應的select語句,根據需要帶where和其他子句,示例如下:

1

declare custcursor cursor

2for

3select

*from

customers

4where cust_email is

null

2. 使用游標

使用open cursor語句開啟游標,使用fetch語句訪問游標資料了。fetch指出要檢索哪些行,從何處檢索它們以及將它們放於何處(如變數名),下面是sql server中使用游標的示例:

1

declare

@cust_id

char(10),2

@cust_name

char(50),3

@cust_address

char(50),4

@cust_city

char(50),5

@cust_state

char(5),6

@cust_zip

char(10),7

@cust_country

char(50),8

@cust_contact

char(50),9

@cust_email

char(255)10

open

custcursor

11fetch

next

from

custcursor

12into

@cust_id, @cust_name, @cust_address,13

@cust_city, @cust_state, @cust_zip,14

@cust_country, @cust_contact, @cust_email

15while

@@fetch_status=0

16begin

1718

fetch

next

from

custcursor

19into

@cust_id, @cust_name, @cust_address,20

@cust_city, @cust_state, @cust_zip,21

@cust_country, @cust_contact, @cust_email

22...

23end

24close custcursor

在此例中,為每個檢索出的列宣告乙個變數,fetch語句檢索一行並儲存值到這些變數中。使用while迴圈處理每一行,條件while @@fetch_status = 0在取不出更多的行時終止處理(退出迴圈)。這個例子也不進行具體的處理,實際**中,應該用具體的處理**替換其中的佔位符。

3. 關閉游標

sql server 中關閉游標:

1

close

custcursor

2deallocate

cursor custcursor

close語句用來關閉游標。一旦游標關閉,如果不再次開啟,將不能使用。第二次使用它時不需要再宣告,只需用open開啟它即可。

SQL 必知必會 筆記 19 使用游標

游標 cursor 是乙個儲存在dbms伺服器上的資料庫查詢,它不是一條select語句,而是被該語句檢索出來的結果集。在儲存了游標之後,應用程式可以根據需要滾動或瀏覽其中的資料。使用游標的步驟 在使用游標前,必須宣告 定義 它。這個過程實際上沒有檢索資料,它只是定義要使用的select語句和游標選...

SQL必知必會筆記二十一(使用游標)

sql檢索操作返回一組稱為結果集的行,這組返回的行都是與sql語句相匹配的行 零行或多行 簡單地使用select語句,沒有辦法得到第一行 下一行或前10行。但這是關係dbms功能的組成部分。結果集 result set sql查詢所檢索出的結果。有時,需要在檢索出來的行中前進或後退一行或多行,這就是...

《sql必知必會》筆記

資料庫 儲存有組織的資料的容器 通常是乙個檔案或一組檔案 注意誤用混淆 資料庫軟體被稱為dbms,資料庫是通過dbms建立和操縱的容器 模式 關於資料庫和表的布局及特性的資訊。主鍵 一列或一組列,其值能夠唯一標識表中的每一行。多條sql語句必須以 分隔。sql語句不區分大小寫,select和sele...