校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 深入SQL Cursor基本用法的詳細(xì)介紹

深入SQL Cursor基本用法的詳細(xì)介紹

熱門標(biāo)簽:美團(tuán)地圖標(biāo)注商戶認(rèn)證注冊 怎么給高德做地圖標(biāo)注 浙江穩(wěn)定外呼系統(tǒng)供應(yīng)商 電銷外呼系統(tǒng)軟件功能 咸陽電腦外呼系統(tǒng)運營商 榕城市地圖標(biāo)注 北京400電話辦理多少錢 慶陽地圖標(biāo)注 承德地圖標(biāo)注公司名需要花錢嗎
由于這個游標(biāo) 執(zhí)行一下就相當(dāng)于SELECT一下 其效率不敢恭維也沒做深入研究。
復(fù)制代碼 代碼如下:

 table1結(jié)構(gòu)如下
 id    int
 name  varchar(50)

 declare @id int
 declare @name varchar(50)
 declare cursor1 cursor for         --定義游標(biāo)cursor1
 select * from table1               --使用游標(biāo)的對象(跟據(jù)需要填入select文)
 open cursor1                       --打開游標(biāo)

 fetch next from cursor1 into @id,@name  --將游標(biāo)向下移1行,獲取的數(shù)據(jù)放入之前定義的變量@id,@name中

 while @@fetch_status=0           --判斷是否成功獲取數(shù)據(jù)
 begin
 update table1 set name=name+'1'
 where id=@id                           --進(jìn)行相應(yīng)處理(跟據(jù)需要填入SQL文)

 fetch next from cursor1 into @id,@name  --將游標(biāo)向下移1行
 end

 close cursor1                   --關(guān)閉游標(biāo)
 deallocate cursor1

游標(biāo)一般格式:
DECLARE 游標(biāo)名稱 CURSOR FOR SELECT 字段1,字段2,字段3,... FROM 表名 WHERE ...
OPEN 游標(biāo)名稱
FETCH NEXT FROM 游標(biāo)名稱 INTO 變量名1,變量名2,變量名3,...
WHILE @@FETCH_STATUS=0
        BEGIN
                  SQL語句執(zhí)行過程... ...
                  FETCH NEXT FROM 游標(biāo)名稱 INTO 變量名1,變量名2,變量名3,...
        END
CLOSE 游標(biāo)名稱
DEALLOCATE 游標(biāo)名稱 (刪除游標(biāo))
復(fù)制代碼 代碼如下:

例子:
/*
功能:數(shù)據(jù)庫表格tbl_users數(shù)據(jù)
deptid userid username
1          100      a
1      101      b
2      102      c
要求用一個sql語句輸出下面結(jié)果
deptid username
1        ab
2        c
[要求用游標(biāo)實現(xiàn)設(shè)計: OK_008
時間: 2006-05
備注:無
*/
create table #Temp1(deptid int,userid int,username varchar(20)) --待測試的數(shù)據(jù)表
create table #Temp2(deptid int,username varchar(20))                --結(jié)果表
--先把一些待測試的數(shù)據(jù)插入到待測試表#Temp1中
insert into #Temp1
select 1,100,'a' union all
select 1,101,'b' union all
select 1,131,'d' union all
select 1,201,'f' union all
select 2,302,'c' union all
select 2,202,'a' union all
select 2,221,'e' union all
select 3,102,'y' union all
select 3,302,'e' union all
select 3,121,'t'
--
declare @deptid int,@username varchar(20)
--定義游標(biāo)
declare Select_cursor cursor for
        select deptid,username from #Temp1
open Select_cursor
fetch next from Select_cursor into @deptid,@username    --提取操作的列數(shù)據(jù)放到局部變量中
while @@fetch_status=0      --返回被 FETCH 語句執(zhí)行的最后游標(biāo)的狀態(tài)
/*
@@FETCH_STATUS =0          FETCH 語句成功
@@FETCH_STATUS =-1 FETCH 語句失敗或此行不在結(jié)果集中
@@FETCH_STATUS =-2 被提取的行不存在
*/
        begin
                  --當(dāng)表#Temp2列deptid存在相同的數(shù)據(jù)時,就直接在列username上追加@username值
                  if(exists(select * from #Temp2 where deptid=@deptid ))
                          update #Temp2 set username=username +@username where deptid=@deptid
                  else
                  --插入新數(shù)據(jù)
                          insert into #Temp2 select @deptid,@username
                  fetch next from Select_cursor into @deptid,@username
        end
close Select_cursor     
deallocate Select_cursor
select * from #Temp2 --測試結(jié)果
Drop table #Temp1,#Temp2
您可能感興趣的文章:
  • SQL cursor用法實例

標(biāo)簽:貴州 昭通 新鄉(xiāng) 江蘇 呼和浩特 重慶 上海 拉薩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入SQL Cursor基本用法的詳細(xì)介紹》,本文關(guān)鍵詞  深入,SQL,Cursor,基本,用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入SQL Cursor基本用法的詳細(xì)介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于深入SQL Cursor基本用法的詳細(xì)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 全州县| 阿拉善盟| 新乡县| 长沙县| 方山县| 乌恰县| 永寿县| 浠水县| 慈利县| 白玉县| 辽宁省| 海安县| 普宁市| 哈尔滨市| 沧源| 巴里| 屏山县| 嘉善县| 集贤县| 泗阳县| 青冈县| 古丈县| 辽中县| 陆川县| 无为县| 汉中市| 清流县| 马龙县| 长葛市| 阳泉市| 孝昌县| 英山县| 定安县| 佛山市| 青川县| 吉首市| 康马县| 梓潼县| 蒙自县| 林甸县| 遂昌县|