摘要:[T-SQL]預存程序與Cursor語法簡要整理
一直都沒好好認真去看Cursor的邏輯,這次需要去看同事的Script就一次把一些以前沒搞清楚的語法都整理了一下..
--建立預存程序
CREATE PROCEDURE [dbo].[usp_Dorlistest]
@Bid INT,
@Cid INT
AS
--宣告變數
DECLARE @Model nvarchar(80),
@ModelName nvarchar(max),
@cnt int
--設定變數值
SET @cnt = 0
SET @Model = ''
SET @ModelName= 'Name-'
--宣告Cursor for 迴圈
DECLARE dorlis_cursor CURSOR FOR
Select Ferth from model where Bid =@Bid and cid =@cid--for迴圈裡面的資料
OPEN dorlis_cursor --開始run cursor
FETCH NEXT FROM dorlis_cursor INTO @Model --將第一筆資料填入變數
WHILE @@FETCH_STATUS = 0 --檢查是否有讀取到資料; WHILE用來處理迴圈,當為true時則進入迴圈執行
--print 'true'
BEGIN
IF @ModelName = 'Name-' --IF…ELSE 如果是..則,否則就…
Begin
SET @ModelName = @ModelName +@Model
End
ELSE
Begin --BEGIN…END 表示一個區塊,通常搭配IF…ELSE或WHILE一起使用
SET @ModelName = @ModelName + '|' + @Model
SET @cnt =@cnt + 1
End
FETCH NEXT FROM dorlis_cursor INTO @Model--將下一筆資料填入變數
END
--關閉cursor與參數的關聯
CLOSE dorlis_cursor
DEALLOCATE dorlis_cursor --將cursor物件從記憶體移除
print @ModelName
-- exec dbo.usp_Dorlistest '4','3'
執行結果: