閱讀以下代碼,在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中使用遊標
作業原地址:作業
目錄
遊標:
是系統開設的一個數據緩衝區,存放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)