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

歡迎訪問 生活随笔!

生活随笔

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

数据库

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

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

目錄

  • 前言
  • 一、游標的定義
  • 二、游標的聲明
  • 三、游標的打開
  • 四、游標的使用
  • 五、游標的關閉
  • 六、游標的刪除
  • 七、靜態游標和動態游標
  • 結語


前言

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

一、游標的定義

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

二、游標的聲明

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

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

三、游標的打開

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

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

四、游標的使用

使用FETCH語句使游標來提取數據,格式如下:

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

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

五、游標的關閉

關閉游標使用CLOSE語句,格式如下:

CLOSE <游標的名稱>

六、游標的刪除

在關閉游標后,要釋放其占用的系統空間,刪除游標使用DEALLOCATE語句,格式如下:

DEALLOCATE <游標的名稱>

例1、根據下表信息,在數據庫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、根據信息,在數據庫Sales中,定義一個游標CURSOR_3求銷售員信息表員工的工號、姓名、性別、住址、電話信息。

這里使用了WHILE語句,其條件表達式中采用的@@FETCH_STATUS函數返回上一條游標FETCH語句的狀態,當返回值為0,循環繼續進行,否則退出循環,從而達到求銷售員信息表的員工信息。
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

七、靜態游標和動態游標

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

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

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

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

這里因為求得最后一行信息即要使用LAST,所以要在CURSOR前面加SCROLL,使其變為動態游標。
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、根據例3信息,在數據庫Sales中,定義一個游標CURSOR_2分別求商品信息表中最后一行、游標當前行起前的第3行數據、游標當前行的前一行、表中第一行起向后的第2行、表中的第一行的數據。
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行數據,且將其作為當前行 FETCH PRIOR FROM CURSOR_2 --讀取游標當前行的前一行,且將其作為當前行 FETCH ABSOLUTE 2 FROM CURSOR_2 --讀取表中第一行起向后的第2行,且將其作為當前行 FETCH FIRST FROM CURSOR_2 --讀取表中的第一行,且將其作為當前行 CLOSE CURSOR_2 DEALLOCATE CURSOR_2

結語

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。