sql中的遊标怎麼用?【本文詳細介紹了數據庫中遊标的基本概念和使用方法,歡迎讀者朋友們閱讀、轉發和收藏】,今天小編就來聊一聊關于sql中的遊标怎麼用?接下來我們就一起去研究一下吧!
sql中的遊标怎麼用
【本文詳細介紹了數據庫中遊标的基本概念和使用方法,歡迎讀者朋友們閱讀、轉發和收藏!】
1 基本概念1.1 定義一般情況下,我們用SELECT這些查詢語句時,都是針對的一行記錄而言,如果要在查詢分析器中對多行記錄(即記錄集)進行讀取操作時,則需要使用到遊标。遊标分為靜态遊标和動态遊标兩種。
- 靜态遊标在打開時會将數據集存儲在tempdb中,因此顯示的數據與遊标打開時的數據集保持一緻,在遊标打開以後對數據庫的更新不會顯示在遊标中。
- 動态遊标在打開後會反映對數據庫的更改。所有UPDATE、INSERT和DELETE操作都會顯示在遊标的結果集中,結果集中的行數據值、順序和成員在每次提取時都會改變。
1 、聲明遊标
遊标在使用之前必須先聲明,可用DECLARE CURSOR語句聲明遊标,其一般格式為:
DECLAR<遊标名>[INSENSITIVE][SCROLL]CURSOR
FOR<SELECT-查詢塊>
[FOR{READ ONLY|UPDATE[OF<列名>[,<列名>...]]}]
說明:
- INSENSITIVE—— 使用數據的臨時複制來定義遊标,這時的遊标實際上不允許修改的。
- SCROLL—— 可以使用任何方法來存取數據,允許更新和删除。
- FOR<SELECT- 查詢塊>——使用SELECT查詢塊來定義一個遊标。
- FOR READ ONLY 或FOR UPDATE——說明是隻讀的遊标還是可修改的遊标。
2 、打開遊标
使用OPEN語句的功能是打開遊标,實際上就是執行相應的SELECT查詢語句,将查詢結果放到緩沖區。這時遊标處于活動狀态,遊标指針指向第一條記錄。其一般格式為:
OPEN<遊标名>
3 、提取遊标
FETCH 語句是從遊标中提取特定的一行。其一般格式為:
FETCH
[[NEXT|PRIOR|FIRST|LAST|ABSOLUTE n|RELATIVE n]FROM]
<遊标名>
[INTO:<主變量1>,<主變量2>...]
說明:
- NEXT—— 說明如果是在OPEN後第一次執行FETCH命令,則返回結果集的第一行,否則使遊标的指針指向結果集的下一行,NEXT是默認的選項。
- PRIOR—— 返回結果集當前行的前一行。
- FIRST—— 返回結果集的第一行。
- LAST—— 返回結果集的最後一行。
- ABSOLUTE n—— 如果n是正數,返回結果集的第n行,如果n是負數,則返回結果集的倒數第n行
- RELATIVE n—— 如果n是正數,返回當前行後的第n行,如果n是負數,則返回當前行開始倒數的第n行。
- INTO—— 該語句的功能是把遊标取出的當前記錄送入到主變量,INTO後的主變量要與在DECLARE CURSOR中SELECT的字段相對應。
4 、關閉遊标
使用CLOSE 語句關閉遊标,其一般格式為:
CLOSE<遊标名>
5 、釋放遊标
使用DEALLOCATE語句釋放遊标,其一般格式為:
DEALLOCATE<遊标名>