日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库原理与应用(SQL Server)笔记 第十一章 游标

發(fā)布時間:2024/2/28 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库原理与应用(SQL Server)笔记 第十一章 游标 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 一、游標的定義
  • 二、游標的聲明
  • 三、游標的打開
  • 四、游標的使用
  • 五、游標的關(guān)閉
  • 六、游標的刪除
  • 七、靜態(tài)游標和動態(tài)游標
  • 結(jié)語


前言

本章內(nèi)容將從六個方面介紹關(guān)于游標的知識,分別是其定義、聲明、打開、使用、關(guān)閉、刪除,另外還會介紹靜態(tài)游標和動態(tài)游標。

一、游標的定義

當對由SELECT語句返回的結(jié)果集中的某一行或部分行進行單獨處理時,就要用到一種擴展,也就是游標,游標提供了對一個結(jié)果集進行逐行處理的能力。
游標可以保存查詢結(jié)果,方便下文調(diào)用,因為使用游標會保存數(shù)據(jù)行的副本,在創(chuàng)建游標后,下文查詢即可從副本中查詢,比直接查數(shù)據(jù)庫快很多。

二、游標的聲明

游標包括兩部分,一是游標結(jié)果集,即是由SELECT語句返回的結(jié)果集的集合,二是游標當前行指針,即指向該結(jié)果集中某一行的指針。
聲明游標使用DECLARE CURSOR語句,格式如下:

DECLARE <游標的名稱>(INSENSITIVE)(SCROLL)CURSOR /*INSENSITIVE表示對基表的任何改動都不會影響到游標數(shù)據(jù)中,且表示游標是只讀的,不允許修改,也不能通過它修改基表的數(shù)據(jù)。*/ /*SCROLL表示使用所有的提取選項(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE),若不指定只能使用NEXT提取選項。*/ FOR <SELECT 語句>

三、游標的打開

當游標被打開時,其游標位置位于第一行。
打開游標使用OPEN語句,格式如下:

OPENGLOBAL<游標的名稱> /*GLOBAL表示打開的是全局游標,否則打開的是局部游標*/

四、游標的使用

使用FETCH語句使游標來提取數(shù)據(jù),格式如下:

FETCH NEXT/PRIOR/FIRST/LAST/RELATIVE n/ABSOLUTE n FROMGLOBAL<游標的名稱> (INTO <變量的名稱>) /*INTO表示將讀取的游標數(shù)據(jù)存放到指定的變量中,后跟變量的名稱*/

這里的NEXT/PRIOR/FIRST/LAST/RELATIVE n/ABSOLUTE n用于表示游標讀取數(shù)據(jù)的位置。
(1)NEXT表示讀取游標中當前行的下一行,且將其作為當前行;
(2)PRIOR表示讀取游標中當前行的前一行,且將其作為當前行;
(3)FIRST表示讀取游標中的第一行,且將其作為當前行;
(4)LAST表示讀取游標中的最后一行,且將其作為當前行;
(5)RELATIVE n表示讀取游標的當前行的前或后n行,若n>0,則讀取游標當前行起向后的第n行數(shù)據(jù),若n<0,則讀取游標當前行起向前的第n行數(shù)據(jù),且將其作為當前行;
(6)ABSOLUTE n表示讀取游標從第一行或最后一行開始的第n行,若n>0,則讀取從結(jié)果集的第一行(包括第一行)起向后的第n行,若n<0,則讀取從結(jié)果集的最后一行起向前的第n行,且將其作為當前行。

五、游標的關(guān)閉

關(guān)閉游標使用CLOSE語句,格式如下:

CLOSE <游標的名稱>

六、游標的刪除

在關(guān)閉游標后,要釋放其占用的系統(tǒng)空間,刪除游標使用DEALLOCATE語句,格式如下:

DEALLOCATE <游標的名稱>

例1、根據(jù)下表信息,在數(shù)據(jù)庫Sales中,定義一個游標CURSOR_0求商品信息表第一行的商品信息。
> sql語句:
USE Sales DECLARE CURSOR_0 CURSOR FOR SELECT* FROM Product OPEN CURSOR_0 FETCH NEXT FROM CURSOR_0 CLOSE CURSOR_0 DEALLOCATE CURSOR_0

例2、根據(jù)信息,在數(shù)據(jù)庫Sales中,定義一個游標CURSOR_3求銷售員信息表員工的工號、姓名、性別、住址、電話信息。

這里使用了WHILE語句,其條件表達式中采用的@@FETCH_STATUS函數(shù)返回上一條游標FETCH語句的狀態(tài),當返回值為0,循環(huán)繼續(xù)進行,否則退出循環(huán),從而達到求銷售員信息表的員工信息。
sql語句:USE Sales DECLARE @SaleID char(3),@Salename varchar(20),@Sex char(2), @Address varchar(60),@Telephone varchar(20) DECLARE CURSOR_3 CURSOR FOR SELECT SaleID,Salename,Sex,Address,Telephone FROM Seller OPEN CURSOR_3 FETCH NEXT FROM CURSOR_3 INTO @SaleID,@Salename,@Sex,@Address,@Telephone PRINT '工號 姓名 性別 住址 電話' PRINT '-------------------------------------------' WHILE @@FETCH_STATUS=0 BEGIN PRINT @SaleID+' '+@Salename+' '+@Sex+' '+@Address+' '+@Telephone FETCH NEXT FROM CURSOR_3 INTO @SaleID,@Salename,@Sex,@Address,@Telephone END CLOSE CURSOR_3 DEALLOCATE CURSOR_3

七、靜態(tài)游標和動態(tài)游標

SQL Server支持的API服務(wù)器游標分為一下4種,分別是靜態(tài)游標、動態(tài)游標、只進游標和鍵集驅(qū)動游標,這里只介紹前兩種游標。
1、靜態(tài)游標,即只有NEXT操作。

/SCROLL表示使用所有的提取選項(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE),若不指定只能使用NEXT提取選項。/

上面例1、2定義的即是靜態(tài)游標。
2、動態(tài)游標,有多種操作(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE)。

例3、根據(jù)下表信息,在數(shù)據(jù)庫Sales中,定義一個游標CURSOR_1求商品信息表最后一行的商品信息。

這里因為求得最后一行信息即要使用LAST,所以要在CURSOR前面加SCROLL,使其變?yōu)閯討B(tài)游標。
sql語句:USE Sales DECLARE CURSOR_1 SCROLL CURSOR FOR SELECT * FROM Product OPEN CURSOR_1 FETCH LAST FROM CURSOR_1 CLOSE CURSOR_1 DEALLOCATE CURSOR_1

例4、根據(jù)例3信息,在數(shù)據(jù)庫Sales中,定義一個游標CURSOR_2分別求商品信息表中最后一行、游標當前行起前的第3行數(shù)據(jù)、游標當前行的前一行、表中第一行起向后的第2行、表中的第一行的數(shù)據(jù)。
sql語句:USE Sales DECLARE CURSOR_2 SCROLL CURSOR FOR SELECT * FROM Product OPEN CURSOR_2 FETCH LAST FROM CURSOR_2 --讀取表中最后一行,且將其作為當前行 FETCH RELATIVE -3 FROM CURSOR_2 --讀取游標當前行起前的第3行數(shù)據(jù),且將其作為當前行 FETCH PRIOR FROM CURSOR_2 --讀取游標當前行的前一行,且將其作為當前行 FETCH ABSOLUTE 2 FROM CURSOR_2 --讀取表中第一行起向后的第2行,且將其作為當前行 FETCH FIRST FROM CURSOR_2 --讀取表中的第一行,且將其作為當前行 CLOSE CURSOR_2 DEALLOCATE CURSOR_2

結(jié)語

以上就是本次數(shù)據(jù)庫原理與應(yīng)用的全部內(nèi)容,篇幅較長,感謝您的閱讀和支持,若有表述或代碼中有不當之處,望指出!您的指出和建議能給作者帶來很大的動力!!!

總結(jié)

以上是生活随笔為你收集整理的数据库原理与应用(SQL Server)笔记 第十一章 游标的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。