亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

從一個小例子認識SQL游標

2024-07-21 02:48:39
字體:
來源:轉載
供稿:網友
從一個小例子認識SQL游標

1 什么是游標:

關系數據庫中的操作會對整個行集起作用。 例如,由 SELECT 語句返回的行集包括滿足該語句的 WHERE 子句中條件的所有行。 這種由語句返回的完整行集稱為結果集。 應用程序,特別是交互式聯機應用程序,并不總能將整個結果集作為一個單元來有效地處理。 這些應用程序需要一種機制以便每次處理一行或一部分行。 游標就是提供這種機制的對結果集的一種擴展。

游標通過以下方式來擴展結果處理:

  • 允許定位在結果集的特定行。
  • 從結果集的當前位置檢索一行或一部分行。
  • 支持對結果集中當前位置的行進行數據修改。
  • 為由其他用戶對顯示在結果集中的數據庫數據所做的更改提供不同級別的可見性支持。
  • 提供腳本、存儲過程和觸發器中用于訪問結果集中的數據的 Transact-SQL 語句。

——MSDN

不難理解,游標與其他數據庫操作的最大不同就是對象是單條記錄而不是結果集,一般用于過程化程序里嵌入的SQL語句。在數據庫服務程序里用到了自動隱含創建的游標。

2 基本用法:

2.1 聲明游標

DECLARE 游標名 CURSOR

FOR SELECT語句

2.2 打開游標

OPEN 游標名

2.3 從游標獲取數據

FETCH NEXT FROM 游標名 [ INTO FETCH_LIST ]

從游標獲取數據需要注意可能到達游標末尾,以下方法解決這個問題以避免用戶在關閉游標時產生錯誤

 1 BEGIN 2     DECLARE @custname VARCHAR(20) 3     DECLARE namecursor CURSOR FOR SELECT CUST_NAME FROM TBL_CUSTOMER OPEN namecursor 4     FETCH NEXT FROM namecursor INTO @custname 5     WHILE (@@FETCH_STATUS <> -1) 6     BEGIN 7         IF (@@FETCH_STATUS <> -2) 8         BEGIN 9         --操作游標變量10     END11     FETCH NEXT FROM namecursor INTO @custname12 END13 CLOSE namecursor14 DEALLOCATE namecursor15 END

2.4 關閉游標

CLOSE 游標名

關閉后不能對游標進行讀取等操作,但可以使用OPEN語句再次打開

2.5 釋放游標

DEALLOCATE 游標名

即刪除游標,不可再使用

3 一個有意思的小例子:

雖然知道了游標的概念和基本用法,但對于什么時候用游標還很模糊,甚至誤認為游標可以被子查詢所代替。直到遇到了這個有意思的小例子:

表結構如下:

題目要求是:列出從事同一種工作但屬于不同部門的雇員的不同組合

即如下結果:

在想盡了子查詢、表連接、建臨時表等等辦法之后,我發現我遇到了一個不可逾越的障礙:無法排除兩個名字組合的唯一性。即:我得到的結果可能是如下

ANAMEBNAME
AdamsJames
JamesAdams

最終我想到了剛學到的游標,代碼如下

 1 SELECT A.Ename AS ANAME, B.Ename AS BNAME 2 INTO #t 3 FROM EMP A 4 JOIN EMP B  5 ON A.job = B.job AND A.deptNo <> B.deptNo and A.Ename<>b.Ename 6 ORDER BY ANAME 7  8 --DROP TABLE #t 9 10 DECLARE TEST_CURSOR CURSOR FOR11 SELECT ANAME, BNAME FROM #t12 13 OPEN TEST_CURSOR14 DECLARE @ANAME VARCHAR(20)15 DECLARE @BNAME VARCHAR(20)16 17 FETCH NEXT FROM TEST_CURSOR INTO @ANAME, @BNAME18 DELETE FROM #t WHERE ANAME=@BNAME AND BNAME=@ANAME19 WHILE @@FETCH_STATUS = 020 BEGIN 21     FETCH NEXT FROM TEST_CURSOR INTO @ANAME, @BNAME22     DELETE FROM #t WHERE ANAME=@BNAME AND BNAME=@ANAME23 END24 25 CLOSE TEST_CURSOR26 DEALLOCATE TEST_CURSOR27 28 SELECT * FROM #t

--------------------------------------------------------------------------------------

--12.2更新:

突然發現這題可以用極其簡單的方法寫出來,用游標簡直Stupid~~

1 SELECT A.Ename AS ANAME, B.Ename AS BNAME 2 FROM EMP A, EMP B3 WHERE A.job = B.job AND A.deptNo <> B.deptNo AND A.Ename < B.Ename4 ORDER BY ANAME

掩面遁走~~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美xxxx做受欧美.88| 亚洲欧美在线一区二区| 成人激情视频在线观看| 久久人人爽人人爽爽久久| 国产精品一区二区三区久久| 久久综合88中文色鬼| 久久成人人人人精品欧| 国产最新精品视频| 国产一区二区三区直播精品电影| 国产精品久久在线观看| 97香蕉超级碰碰久久免费的优势| 国产精品www网站| www日韩欧美| 久久久久久国产| 国产在线拍偷自揄拍精品| 久久亚洲一区二区三区四区五区高| 欧美日韩国产精品专区| 亚洲free性xxxx护士白浆| 久久免费成人精品视频| 国产精品美女在线| 51视频国产精品一区二区| 亚洲精品一二区| 国产日本欧美在线观看| 久久激情视频免费观看| 高清欧美电影在线| 成人xxxx视频| 日本久久久a级免费| 九九九热精品免费视频观看网站| 欧美成人精品不卡视频在线观看| 国产精品久久久久高潮| 国外成人性视频| 黑人精品xxx一区| 成人精品视频在线| 亚洲最新av在线| 97视频在线观看成人| 中文国产成人精品| 精品久久久久久中文字幕| 日韩国产一区三区| 在线成人中文字幕| 日韩欧美黄色动漫| 国产亚洲欧美一区| 伊人一区二区三区久久精品| 国内外成人免费激情在线视频| 国产精品久久久久久久久久久不卡| 久久久亚洲天堂| 亚洲国产毛片完整版| 亚洲视频一区二区三区| 国产一区二区三区毛片| 亚洲精品98久久久久久中文字幕| 欧美电影免费观看网站| 日韩电视剧在线观看免费网站| 欧美精品videos另类日本| 欧美专区在线观看| 性视频1819p久久| 国产精品高潮呻吟久久av野狼| 高清欧美电影在线| 欧美精品一区三区| 国产精品久久久久9999| 成人网在线观看| 麻豆国产va免费精品高清在线| 国产欧美一区二区三区四区| 国产一区二区三区日韩欧美| 亚洲精品国产精品国产自| 国产91在线高潮白浆在线观看| 国产亚洲欧美日韩一区二区| 国产精品高潮呻吟久久av野狼| 亚州精品天堂中文字幕| 国产成人精品电影久久久| 日韩视频在线一区| 黑人精品xxx一区一二区| 亚洲国产精品va在线看黑人动漫| 国产精品美女www| 国产精品日日做人人爱| 欧美日韩裸体免费视频| 色噜噜狠狠狠综合曰曰曰| 97视频免费观看| 久久韩剧网电视剧| 日韩一区二区三区在线播放| 亚洲美女动态图120秒| 日韩成人在线视频网站| 欧美日韩中文字幕日韩欧美| 97在线观看视频| 国产一区二区在线播放| 亚洲激情中文字幕| 亚洲精品久久7777777| 亚洲欧美中文另类| 91高清视频在线免费观看| 日本精品va在线观看| 久久99国产综合精品女同| 日韩免费不卡av| 欧美成在线视频| 欧美高清视频一区二区| 亚洲黄色www| 91久久精品日日躁夜夜躁国产| 欧亚精品中文字幕| 日本19禁啪啪免费观看www| 国内精品久久久久久久| 亚洲男人第一av网站| 少妇久久久久久| 国语自产精品视频在线看| 日韩av综合网站| 国产精品手机播放| 亚洲第一视频在线观看| 日韩中文字幕在线精品| 日韩在线国产精品| 91在线观看免费高清完整版在线观看| 亚洲精品中文字幕女同| 深夜福利日韩在线看| 成人有码视频在线播放| 国产精品稀缺呦系列在线| 一本色道久久综合亚洲精品小说| 亚洲国产毛片完整版| 国产精品视频一区二区高潮| 欧美精品久久久久| 精品久久中文字幕| 亚洲一区亚洲二区| 久久天堂av综合合色| 成人午夜在线影院| 欧美日韩国产成人在线| 日韩免费看的电影电视剧大全| 国产日本欧美在线观看| 91精品国产自产在线| 欧美精品在线免费观看| 欧美精品福利视频| 亚洲电影免费观看高清完整版在线| 国产精品亚洲片夜色在线| 亚洲视频网站在线观看| 久久影视免费观看| 欧美激情一区二区三区成人| 欧美日本高清视频| 国产精品天天狠天天看| 欧美最顶级的aⅴ艳星| 国产97在线亚洲| 色综合久久精品亚洲国产| 日韩电影中文字幕在线观看| 亚洲国产中文字幕在线观看| 性亚洲最疯狂xxxx高清| 亚洲qvod图片区电影| 国产精品偷伦免费视频观看的| 国产欧亚日韩视频| 在线日韩中文字幕| 国产精品久久久久秋霞鲁丝| 亚洲a一级视频| 欧美巨猛xxxx猛交黑人97人| 欧美野外wwwxxx| 97人人爽人人喊人人模波多| 国产精选久久久久久| 亚洲欧洲美洲在线综合| 亚洲精品福利免费在线观看| 日韩免费av一区二区| 久久免费成人精品视频| 成人精品aaaa网站| 最新69国产成人精品视频免费| 国产极品精品在线观看| 亚洲精品国产品国语在线| 国产91ⅴ在线精品免费观看| 国产亚洲精品久久久优势| 亚洲国产精品久久91精品| 国产区亚洲区欧美区| 日韩欧美精品在线观看| 中文字幕在线日韩| 亚洲国产精品久久精品怡红院| 国产一区二区三区在线播放免费观看| 91精品久久久久久久久久另类|