SQL用法三(游標和Fetch)


/一般情況下,我們用SELECT這些查詢語句時,都是針對的一行記錄而言,
如果要在查詢分析器中對多行記錄(即記錄集)進行讀取操作時,則需要使用到游標或WHILE等循環
/
以下內容摘自
http://www.cnblogs.com/aotian56/archive/2007/07/13/817281.html
/
游標的類型:
  1、靜態游標(不檢測數據行的變化)
  2、動態游標(反映所有數據行的改變)
  3、僅向前游標(不支持滾動)
  4、鍵集游標(能反映修改,但不能准確反映插入、刪除)

游標使用順序:
   1、定義游標
   2、打開游標
   3、使用游標
   4、關閉游標
   5、釋放游標

Transact-SQL:
declare 游標名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS]  
  for selet語句   [for  update[of 列名[,列名]]
 注:LOCAL 局部游標     GLOBAL 全局游標
     FORWARD_ONLY 僅向前  SCROLL 滾動
     STATIC 靜態  KEYSET 鍵集 DYNAMIC 動態
     READ_ONLY 只讀 SCROLL_LOCKS 鎖定游標當前行

獲取游標的數據
  FETCH [[NEXT | PRIOR | FIRST | LAST | 
  ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]
  From ] 游標名 [into 變量]
  注:
    NEXT  下一行  PRIOR  上一行  FIRST 第一行
    LAST  最后一行  ABSOLUTE n 第n行
    RELATIVE n 當前位置開始的第n行
    into 變量  把當前行的各字段值賦值給變量

游標狀態變量:
    @@fetch_status  游標狀態
         0 成功  -1 失敗  -2 丟失
    @@cursor_rows 游標中結果集中的行數
        n 行數 -1 游標是動態的  0 空集游標
操作游標的當前行:
   current of 游標名

以下例子,在SQL SERVER 2000 測試成功

use pubs
go

declare @auid char(12),@aulname varchar(20),@aufname varchar(20), @st char(2),@auinfo varchar(50)
declare auth_cur cursor for
select au_id, au_lname, au_fname, state
from authors

open auth_cur


fetch next from auth_cur into @auid,@aulname,@aufname, @st
while (@@fetch_status=0)
  begin
    print '作者編號: '+@auid
    print '作者姓名: '+@aulname+','+@aufname
    print '所在州: '+@st
    print '--------------------------'
    fetch next from auth_cur into @auid,@aulname,@aufname, @st
  end


close auth_cur
deallocate auth_cur


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM