2013年9月10日 星期二

TSQL Cursor Example 語法

TSQL Cursor Example 語法

--定義變數
DECLARE @oid varchar(50),
        @ono varchar(18),
        @s_company nvarchar(50),
        @company nvarchar(50),
        @sql varchar(max)

--設定變數初始值
SET @oid = ''
SET @ono = ''
SET @s_company= ''
SET @company = ''
SET @sql = ''

--宣告Cursor for 迴圈
DECLARE rma_cursor CURSOR FOR

--SQL指令
SELECT oid,ono,s_company,company FROM dbo.t_RMA_Request

--開始執行 cursor
OPEN rma_cursor

--將第一筆資料放入變數
FETCH NEXT FROM rma_cursor INTO @oid,@ono,@s_company,@company

--檢查是否有讀取到資料; WHILE用來處理迴圈,當為true時則進入迴圈執行
WHILE @@FETCH_STATUS=0
BEGIN --開始

--迴圈內要執行的程序
IF @s_company <> ''
BEGIN
--組合@sql字串變數
SET @sql  = @sql + ';' + 'update t_RMA_Request_Item set s_company=''' + @s_company + ''' where opid=''' + @oid + ''''
--實際執行另一段內部SQL指令
UPDATE t_RMA_Request_Item SET s_company=@s_company WHERE opid=@oid
END
ELSE
BEGIN
--組合@sql字串變數
SET @sql  = @sql + ';' + 'update t_RMA_Request_Item set s_company=''' + @company + ''' where opid=''' + @oid + ''''
--實際執行另一段內部SQL指令
UPDATE t_RMA_Request_Item SET s_company=@company WHERE opid=@oid
END

--將下一筆資料放入變數
FETCH NEXT FROM rma_cursor INTO @oid,@ono,@s_company,@company
END --結束

--關閉Cursor與參數的關聯
CLOSE rma_cursor

--將Cursor物件從記憶體移除
DEALLOCATE rma_cursor

--列印字串組合結果
PRINT @sql

沒有留言:

張貼留言