首頁  >  文章  >  php教程  >  SQL中游標的使用

SQL中游標的使用

高洛峰
高洛峰原創
2016-12-14 11:20:481187瀏覽

一般情況下,我們用SELECT這些查詢語句時,都是針對的一行記錄而言,
如果要在查詢分析器中對多行記錄(即記錄集)進行讀取操作時,則需要使用到遊標或WHILE等循環


遊標的類型:
  1、靜態遊標(不偵測資料行的變化)
  2、動態遊標(反映所有資料行的變更)
  3、僅向前遊標(不支援捲動)
4.鍵集遊標(能反映修改,但無法精確反映插入、刪除)

遊標使用順序:
   1、定義遊標
   2、開啟遊標
   3、使用遊標
   2、開啟遊標
   3、使用遊標

 

Transact-SQL:
declare 遊標名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS] .附註:LOCAL 局部遊標     GLOBAL 全域遊標
     FORWARD_ONLY 僅向前  SCROLL 捲動
    

取得遊標的資料
  FETCH [[NEXT | PRIOR | FIRST | LAST |

  ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]

  From ] 遊標名[into 變數]
  附註:
    NEXT  下一行 PRIOR 行
    RELATIVE n 目前位置開始的第n行
    into 變數 將目前行程的各場值賦值給變數

遊標狀態變數:
    @@fetch_status    @@cursor_rows 遊標中結果集中的行數
        n 行數-1 遊標是動態的  0 空集遊標

作業遊標的目前行:

   current of 遊標名

標例1:使用遊標例對曆

declare @auid char(12),@aulname varchar(20),@aufname varchar(20), @st char(2),@auinfo varchar(50)
for🠎來au_fname, state

from authors

open auth_cur

fetch next from auth_cur into @auid,@aulname,@aufname,rom auth_cur into @auid,@aulname,@aufname,rom auth_cur into @auid,@aulname,@aufname, 我  begin

    print '作者編號: ' +@auid

    print '作者姓名: '+@aulname+','+@aufname

    print '所在州: '+@st

   print '所在州: '+@st

 -----------'

    fetch next from auth_cur into @auid,@aulname,@aufname, @st

  end

close @st

  end

close @st

  end

close @st

¡刪除資料

declare auth_cur cursor scroll for

select au_id, au_lname, au_fname, state

from authors for update of aunamedate of c

set @rowcount = 6

fetch absolute @rowcount from auth_cur  --將變數@rowcount標識的行設定為目前行

--下面1行是利用遊標進行修改操作

update authors set au_lname='張' where current of auth_cur --修改遊標中的目前行

--下面1行是利用遊標進行刪除操作

delete from authors where current of auth_cur

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn