[SQL SERVER][TSQL]如何在Store Precedure 同時使用 Cursor 和動態SQL
網友問題,自己紀錄備忘使用。
一個Cursor只能接受一句statement,如果你真的需要動態建立SQL,
那麼請你也把定義 Cursor 的語法 和動態SQL一起處理,下面我做個簡單示範。
Declare @FunIn nvarchar(10),
@Mycost int,
@Value nvarchar(30),
@Total numeric(20,3),
@MyQuery nvarchar(500),
@Mywhere nvarchar(100),
@Sqlstatement nvarchar(max);
if @FunIn='001'
set @Value='政策';
else
set @Value='執行';
set @Mywhere=' where Case_Kind='''+@Value+'''';
set @MyQuery = 'SELECT top 10 Total_Trouble_Count FROM dbo.REPORT_STATISTICS'+@Mywhere ;
--定義 Cursor 的語法 和動態SQL一起處理
set @Sqlstatement = 'Declare MyCursor CURSOR FAST_FORWARD FOR ' +@MyQuery
exec sp_executesql @Sqlstatement
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @Mycost
WHILE @@FETCH_STATUS = 0
BEGIN
set @Total =(@Mycost+1)*0.05;
print @Total
FETCH NEXT FROM MyCursor INTO @Mycost
END
CLOSE MyCursor
DEALLOCATE MyCursor
參考