国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

sqlserver中游標(biāo)的認(rèn)識

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 13:53:23
文檔

sqlserver中游標(biāo)的認(rèn)識

sqlserver中游標(biāo)的認(rèn)識:一、遇到的問題 實(shí)際上,也不算什么太大的問題O(_)O:我們有時(shí)候可能希望在批處理或者存儲(chǔ)過程中直接對select結(jié)果集進(jìn)行加工 ,這個(gè)時(shí)候,我們需要一種能夠讓我們逐條處理每一行記錄 的數(shù)據(jù)庫對象。 二、游標(biāo)的概念 解決上面的問題,我們可以使用一種叫做游
推薦度:
導(dǎo)讀sqlserver中游標(biāo)的認(rèn)識:一、遇到的問題 實(shí)際上,也不算什么太大的問題O(_)O:我們有時(shí)候可能希望在批處理或者存儲(chǔ)過程中直接對select結(jié)果集進(jìn)行加工 ,這個(gè)時(shí)候,我們需要一種能夠讓我們逐條處理每一行記錄 的數(shù)據(jù)庫對象。 二、游標(biāo)的概念 解決上面的問題,我們可以使用一種叫做游

一、遇到的問題 實(shí)際上,也不算什么太大的問題O(_)O:我們有時(shí)候可能希望在批處理或者存儲(chǔ)過程中直接對select結(jié)果集進(jìn)行加工 ,這個(gè)時(shí)候,我們需要一種能夠讓我們逐條處理每一行記錄 的數(shù)據(jù)庫對象。 二、游標(biāo)的概念 解決上面的問題,我們可以使用一種叫做游

  一、遇到的問題

  實(shí)際上,也不算什么太大的問題O(∩_∩)O:我們有時(shí)候可能希望在批處理或者存儲(chǔ)過程中直接對select結(jié)果集進(jìn)行加工 ,這個(gè)時(shí)候,我們需要一種能夠讓我們逐條處理每一行記錄 的數(shù)據(jù)庫對象。

  二、游標(biāo)的概念

  解決上面的問題,我們可以使用一種叫做“游標(biāo)”的數(shù)據(jù)庫對象。

  游標(biāo)(Cursor) 可以看做一種數(shù)據(jù)類型,它可以用來遍歷結(jié)果集,相當(dāng)于指針,或者是數(shù)組中的下標(biāo)。它處理結(jié)果集的方法有以下幾種:

  定位到結(jié)果集的某一行

  從當(dāng)前結(jié)果集的位置搜索一行或一部分行

  對結(jié)果集中的當(dāng)前行進(jìn)行數(shù)據(jù)修改

  三、游標(biāo)的使用方法(創(chuàng)建、打開、讀取、關(guān)閉、刪除)

  【創(chuàng)建游標(biāo)】

  和定義各種數(shù)據(jù)類型的方法有點(diǎn)像,但是注意,不要加“@”(實(shí)際上也有“游標(biāo)類型的變量”,和“游標(biāo)”的用法幾乎完全相同,而且定義時(shí)使用@符號)。下面是定義游標(biāo)的語句:

  declare 游標(biāo)名 cursor [local|global] [forward_only|scroll]

  for

  select查詢語句

  游標(biāo)分為局部游標(biāo)和全局游標(biāo)兩種,local表示局部游標(biāo),global表示全局游標(biāo)(默認(rèn)值,,可以省略)。當(dāng)指定forward_only(默認(rèn)值,可以省略)時(shí),游標(biāo)是只進(jìn)的,也就是說只能從頭到尾地提取記錄,如果需要在行之間來回跳躍,需要指定為scroll。

  【使用游標(biāo)】

  只創(chuàng)建游標(biāo)但是不使用它,就沒有任何意義了。下面我們先舉個(gè)最簡單的例子來演示創(chuàng)建好游標(biāo)之后的幾步使用過程:

  --【創(chuàng)建游標(biāo)】

  declare C1 cursor for select xingming from yiren

  declare @xingming varchar(20)

  --【打開游標(biāo)】

  open C1

  --【讀取游標(biāo)】

  fetch next from C1 into @xingming --while的特點(diǎn)就是要先寫一次

  while(@@FETCH_STATUS=0)

  begin

  print '姓名:'+@xingming

  fetch next from C1 into @xingming

  end

  --【關(guān)閉游標(biāo)】

  close C1

  --【刪除游標(biāo)】

  deallocate C1

  游標(biāo)的使用方法是不是和Java中的 whle(rs.next()){}很像呢?實(shí)際上rs.next()執(zhí)行時(shí)就直接在結(jié)果集中向后移動(dòng)一條了,如果沒有到達(dá)結(jié)果集的末端,仍然會(huì)執(zhí)行循環(huán)體。在這里使用游標(biāo)也是一樣,@@FETCH_STATUS的值為0時(shí),游標(biāo)尚未走到結(jié)尾。當(dāng)它不為0了,游標(biāo)就走到了結(jié)尾,將退出循環(huán)。

  fetch next from 游標(biāo)名 into 變量名列表 是一種固定形式的讀取游標(biāo)內(nèi)容的方法。當(dāng)查詢語句選擇了多個(gè)字段的時(shí)候,讀取時(shí)也需要借助這句話向多個(gè)變量賦值。于是寫成變量名列表。

  【全局游標(biāo)和scroll游標(biāo)】

  前面提到全局游標(biāo)和scroll游標(biāo),下面舉個(gè)例子:

  if(CURSOR_STATUS('global','CURSOR_2')!=-3) deallocate CURSOR_2

  declare CURSOR_2 cursor scroll --全局的scroll游標(biāo)

  for select xingming,nicheng,xingbie from yiren

  --第一個(gè)T-SQL批開始

  open CURSOR_2

  declare @seq int,

  @xingming varchar(20),@nicheng varchar(50),@xingbie nchar

  set @seq=4

  fetch absolute @seq from CURSOR_2 into @xingming,@nicheng,@xingbie

  if(@@FETCH_STATUS=0)

  begin

  print '第'+cast(@seq as varchar)+'個(gè)藝人是:'+@xingming

  print case @xingbie when '男' then '他' when '女' then '她' end

  +'的昵稱是:'+@nicheng

  end

  close CURSOR_2

  go

  --第二個(gè)T-SQL批開始

  open CURSOR_2

  declare @seq int,

  @xingming varchar(20),@nicheng varchar(50),@xingbie nchar

  set @seq=5 --分成了兩個(gè)批,需要再次定義@seq

  fetch absolute @seq from CURSOR_2 into @xingming,@nicheng,@xingbie

  if(@@FETCH_STATUS=0)

  begin

  print '第'+cast(@seq as varchar)+'個(gè)藝人是:'+@xingming

  print case @xingbie when '男' then '他' when '女' then '她' end

  +'的昵稱是:'+@nicheng

  end

  close CURSOR_2

  go

  --在第三個(gè)批中刪除游標(biāo)

  deallocate CURSOR_2

  當(dāng)開啟了scroll選項(xiàng)后,fetch可以用于讀next(后移)、prior(前移)、first(第一行)、last(最后一行)、absolute(以數(shù)值定位到絕對行)、relative(以數(shù)值定位到相對行) 。

  全局游標(biāo)一旦被定義就會(huì)一直存在,所以每個(gè)批處理都能看到它。直到使用deallocate來刪除它,它才會(huì)消失。CURSOR_STATUS('global','CURSOR_2')可以檢查它的狀態(tài)。

  【游標(biāo)的嵌套】

  由于大大影響系統(tǒng)性能,簡單了解一下即可。

  if(CURSOR_STATUS('global','CURSOR_3')!=-3) deallocate CURSOR_3

  declare CURSOR_3 cursor for

  select yanchuid from yanchu

  open CURSOR_3

  declare @ycid int

  fetch next from CURSOR_3

  into @ycid

  while(@@FETCH_STATUS=0)

  begin

  print '參加第'+cast(@ycid as varchar)+'次演出的藝人是:'

  declare CURSOR_4 cursor for

  select xingming from yiren where yirenid in

  (select yirenid from yanchuyiren where yanchuid=@ycid)

  --這句使用了子查詢,實(shí)際上可以再嵌套一個(gè)游標(biāo)

  declare @xingming varchar(50)

  open CURSOR_4

  fetch next from CURSOR_4 into @xingming

  while(@@FETCH_STATUS=0)

  begin

  print @xingming

  fetch next from CURSOR_4 into @xingming

  end

  close CURSOR_4

  deallocate CURSOR_4

  fetch next from CURSOR_3

  into @ycid

  print ''

  end

  close CURSOR_3

  deallocate CURSOR_3

  【游標(biāo)變量】

  游標(biāo)變量是真正的把游標(biāo)當(dāng)做數(shù)據(jù)類型來使用的一種方法,游標(biāo)變量和游標(biāo)對象的區(qū)別就在于是否有@。創(chuàng)建游標(biāo)變量的時(shí)候,首先declare @游標(biāo)變量名 cursor,然后set @游標(biāo)變量名=cursorfor select語句。

  declare @c1 CURSOR

  set @c1=cursor for select xingming from yiren

  open @c1

  declare @xingming varchar(50)

  fetch next from @c1 into @xingming

  print @xingming

  close @c1

  deallocate @c1

  四、游標(biāo)的注意事項(xiàng)

  【游標(biāo)的缺點(diǎn)】

  使用游標(biāo)會(huì)把結(jié)果集一條條取出來處理,增加了服務(wù)器的負(fù)擔(dān),再者使用游標(biāo)的效率遠(yuǎn)遠(yuǎn)沒有使用默認(rèn)結(jié)果集的效率高。所以,能不用游標(biāo)就盡量不要用。

  【游標(biāo)的補(bǔ)充說明】

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

sqlserver中游標(biāo)的認(rèn)識

sqlserver中游標(biāo)的認(rèn)識:一、遇到的問題 實(shí)際上,也不算什么太大的問題O(_)O:我們有時(shí)候可能希望在批處理或者存儲(chǔ)過程中直接對select結(jié)果集進(jìn)行加工 ,這個(gè)時(shí)候,我們需要一種能夠讓我們逐條處理每一行記錄 的數(shù)據(jù)庫對象。 二、游標(biāo)的概念 解決上面的問題,我們可以使用一種叫做游
推薦度:
標(biāo)簽: 了解 sql 認(rèn)識
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美激情亚洲图片 | 精品一区二区三区四区五区 | 免费的一级毛片 | 欧美人与禽zozzo性伦交 | 久久久久久久国产精品 | 亚洲国产一区二区三区精品 | 国产成人在线观看免费网站 | 欧美 国产 日韩 第一页 | 日韩高清一区二区 | 欧洲精品欧美精品 | 欧美日本一区二区三区 | 亚洲一区二区三区在线免费观看 | 午夜精品一区二区三区在线视 | 国内精品伊人久久大香线焦 | 久久伊人五月天 | 色妞综合 | 毛片免费观看成人 | 欧美精品一区二区三区四区 | 久久成人国产精品免费 | 国产第4页 | 亚洲入口 | 亚洲精品视频在线观看免费 | 欧美精品首页 | 中文国产成人精品少久久 | 国产91精品一区二区视色 | 亚洲一区二区三区精品视频 | 亚洲美女一区二区三区 | 国产96在线| 国产日韩欧美亚洲综合 | 欧美久久天天综合香蕉伊 | 日韩在线欧美在线 | 国产亚洲精品va在线 | 亚洲欧美天堂 | 欧美日本一本 | 日韩黄 | 欧美日韩一区二区三区四区 | 日韩在线精品视频 | 手机国产精品一区二区 | 久操视频免费在线观看 | 欧美日韩免费在线视频 | 国产欧美另类第一页 |