SQL 遊標

iSQlServer發表於2010-03-24

資料庫遊標允許你選擇一組資料,通過翻閱這組資料記錄——通常被稱為資料集,檢查每一個遊標所在的特定的行。

你可以將遊標和區域性變數組合在一起對每一個記錄進行檢查,當遊標移動到下一個記錄時,來執行一些外部操作。
遊標的另一個常見的用法是:儲存查詢結果以備以後使用。一個遊標結果集是通過執行SELECT 查詢來建立的。如

果你的應用程式或過程需要重複使用一組記錄,那麼第一次建立遊標以後再重複使用,將會比多次執行查詢快得多。

而且,你還能在查詢的結果集中翻閱記錄。

  1. 建立遊標

Transcat-SQL建立遊標語法如下:

SYNTAX:
       declare cursor_name cursor
             for select_statement
            [for {read only | update [of column_name_list]}]

例子:

declare myCursor cursor
for select * from student
go

現在,已經有了一個名字為myCursor的遊標,它包括了所有的student表中的內容。
為了使用這個遊標,你必須先開啟它。

  1. 開啟遊標

SYNTAX:

       open cursor_name

例子:

open myCursor
go

現在,我們可以使用myCursor來翻閱結果集了。

  1. 使用遊標

SYNTAX:

fetch cursor_name [into fetch_target_list]

每次當FETCH 命令執行時,遊標指標每次可以在結果集中移動一行。如果需要,遊標指標

所在的行的資料可以被填充到fetch_target_list 變數中。

例子:

declare @id char(11)
declare @name char(10)
declare @sex char(2)
declare @age char(2)

fetch myCursor into @id,@name,@sex,@age
while(@@sqlstatus=0)
begin
    print @id
    print @name
    print @sex
    print @age
    fetch myCursor into @id,@name,@sex,@age
end
go

  1. 關閉遊標

SYNTAX:

close cursor_name

這時,遊標只有再次開啟後才能使用。

  1. 釋放遊標

如果你已經完全結束了對一個遊標的使用,DEALLOCATE 命令將釋放遊標所佔用

的記憶體,並且可以讓遊標的名字可以被再次使用。

這是該命令的語法格式:
SYNTAX:
deallocate cursor cursor_name

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-630266/,如需轉載,請註明出處,否則將追究法律責任。

相關文章