[T-SQL]預存程序與Cursor語法簡要整理

摘要:[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…ELSEWHILE一起使用

       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'

 

執行結果: