मुझे लगता है कि यह काम करेगा (और यहां एक लाइव डेमो है ):
declare
@id int,
@sql nvarchar(max),
@last_result nvarchar(100),
@last_runtime datetime,
@params nvarchar(max);
SET @params = N'@retvalOUT varchar(max) OUTPUT';
select @id = min(id) from Test_Run;
while @id is not null
begin
select @sql = Script from Test_Run where id = @id;
set @sql = 'select @retvalOUT= (' + @sql + ')';
exec sp_executesql @sql, @params, @retvalOUT = @last_result OUTPUT;
set @last_runtime = getdate();
update Test_Run set Last_Result = @last_result, Last_Runtime = @last_runtime where id = @id;
select @id = min(id) from Test_Run where id > @id;
end
मैंने कर्सर को पूरी तरह से हटा दिया और इसके बजाय थोड़ी देर के लूप का इस्तेमाल किया - मुझे लगता है कि मुझे कर्सर इतना पसंद नहीं है :-)