Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

sp_executesql और पैरामीटर के साथ कर्सर

मुझे लगता है कि यह काम करेगा (और यहां एक लाइव डेमो है ):

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

मैंने कर्सर को पूरी तरह से हटा दिया और इसके बजाय थोड़ी देर के लूप का इस्तेमाल किया - मुझे लगता है कि मुझे कर्सर इतना पसंद नहीं है :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2016:डेटा डालें

  2. SQL तालिका में पंक्तियों की गणना करता है

  3. मैं SQL सर्वर क्वेरी में सप्ताहांत के दिनों को कैसे निकालूँ?

  4. एक सूची प्राप्त करने के लिए Sql कुल कार्य

  5. पैरामीटर के रूप में तालिका नाम के साथ संग्रहीत प्रक्रिया