SQL Server用遊標迴圈遍歷結果集
阿新 • • 發佈:2018-11-12
1.SQL Server中select 和set 都是賦值用的
DECLARE
@A1 INT
@A2 INT
SET @A1=10
WHILE @A1>0
BEGIN
SELECT @[email protected]
PRINT @[email protected]
Set @[email protected]
END
2.用遊標將表中查出的一個變數儲存到一個變數中
DECLARE @A1 INT, @A2 INT DECLARE YOUCURNAME CURSOR FOR SELECT Accnt_SN FROM FAC_COA WHERE SN=2537 OPEN YOUCURNAME --開啟遊標 fetch next from youcurname into @a1 PRINT @A1 close youcurname --關閉遊標 deallocate youcurname --釋放遊標
3.迴圈:用遊標對錶查出的結果集(先測試一列的情況)進行遍歷
DECLARE @A1 VARCHAR(100) --處理結果的變數 DECLARE YOUCURNAME CURSOR FOR SELECT Accnt_Code --一列 FROM FAC_COA --查詢語句 OPEN YOUCURNAME FETCH NEXT FROM youcurname INTO @A1 WHILE(@@FETCH_STATUS=0) BEGIN PRINT @A1 --處理結果 FETCH NEXT FROM youcurname INTO @A1 --下一條 END CLOSE youcurname DEALLOCATE youcurname
4.迴圈:用遊標對錶查出的結果集(測試多列列的情況)進行遍歷
DECLARE @A1 VARCHAR(100), @A2 VARCHAR(100) --處理結果的變數 DECLARE YOUCURNAME CURSOR FOR SELECT Accnt_Code,Accnt_Name --多列 FROM FAC_COA --查詢語句 OPEN YOUCURNAME FETCH NEXT FROM youcurname INTO @A1,@A2 --此處變數位置和查詢的列要對應型別 WHILE(@@FETCH_STATUS=0) BEGIN PRINT @A1 + @A2 --處理結果 FETCH NEXT FROM youcurname INTO @A1,@A2 --下一條 END CLOSE youcurname DEALLOCATE youcurname
[email protected]@fetch_status
@@fetch_status是MSSQL的一個全域性變數
其值有以下三種,分別表示三種不同含義:【返回型別integer】
0 FETCH 語句成功
-1 FETCH 語句失敗或此行不在結果集中
-2 被提取的行不存在
@@fetch_status值的改變是通過fetch next from實現的
在遍歷迴圈結果集中,需要“FETCH NEXT FROM Cursor” 進行跳入下一行
6.臨時表
#號加名字 建立臨時表:
SELECT * INTO #interim FROM FAC_COA
SELECT *FROM #interim
刪除臨時表:
drop table #interim