【數據庫】作業17——SQL練習9 - CURSOR


閱讀以下代碼,在SQLserver上執行。

分析結果,並總結遊標的使用。

 

IF (exists (select * from sys.objects where name = 'proc_cursor'))
    DROP PROCEDURE proc_cursor
GO
CREATE PROCEDURE proc_cursor -- 存儲過程
AS
DECLARE @Sno char(9)--定義變量
DECLARE @Sname char(20)--定義變量
 
DECLARE mycursor CURSOR FOR select Sno,Sname from Student --聲明遊標
 
OPEN mycursor  --打開遊標
 
FETCH NEXT FROM mycursor INTO @Sno,@Sname
 
WHILE(@@FETCH_STATUS=0)  --遍歷所有的數據
BEGIN
	PRINT '遊標成功取出一條數據:'
	PRINT @Sno
	PRINT @Sname
	PRINT '********************'
	FETCH NEXT FROM mycursor INTO @Sno,@Sname  --取下一條遊標數據
END
 
CLOSE mycursor --關閉遊標
 
DEALLOCATE mycursor --刪除遊標
GO
 
EXEC proc_cursor
GO

 

T-SQL中使用遊標

基礎概念參考教材P246,P250

 

作業原地址:作業

 

目錄

  遊標:

1.查詢結果爲多條記錄的SELECT語句

  (1)說明遊標

  (2)打開遊標

  (3)推進遊標指針並取當前記錄

  (4)關閉遊標

2.CURRENT形式的UPDATE和DELETE語句

 


 


 

 


 

 

  遊標:

  是系統開設的一個數據緩衝區,存放SQL語句的執行結果,每個遊標都有一個名字。可通過遊標逐一獲取記錄並賦給主變量,交由主語言進一步處理。

 

1.查詢結果爲多條記錄的SELECT語句

 

  (1)說明遊標

  EXEC SQL DECLARE<遊標名>CURSOR FOR <SELECT 語句>;

  定義遊標僅僅是一條說明性語句,這時關係數據庫管理系統並不執行SELECT語句。

 

  (2)打開遊標

  EXEC SQL OPEN<遊標名>;

 打開遊標 實際上就是執行相應的SELECT語句,把查詢結果取到緩衝區中。這時遊標 處於活動狀態,指針指向查詢結果集中的第一條記錄。

 

  (3)推進遊標指針並取當前記錄

  EXEC SQL FETCH <遊標名>

             INTO <主變量>[<指示變量>][,<主變量>[指示變量]]...;

  其中主變量必須與SELECT語句中的目標列表達式具有一一對應關係。

 

  (4)關閉遊標

  EXEC SQL CLOSE<遊標名>;

  遊標被關閉後就不再和原來的查詢結果集相結合。但關閉的遊標可以再次被打開,與新的查詢結果想聯繫哦。

 

2.CURRENT形式的UPDATE和DELETE語句

 

  如果只想修改或刪除其中的某個記錄,則需要用帶遊標的SELECT語句查出所有滿足條件的記錄,從中進一步找出要修改或刪除的語句,然後用CURRENT形式的UPDATE和DELECT語句修改或刪除之。

 

  WHERE CURRENT OF<遊標名>

  表示修改或刪除的是最近一次取出的記錄,即遊標指針指向的記錄。

 


完成時間:22min

          以上

                                         ————(2020.4.26)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章