Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

kursor dengan sp_executesql dan parameter

Saya pikir ini akan berhasil (dan ini adalah demo langsung ):

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

Saya menghapus kursor sepenuhnya dan menggunakan loop sementara sebagai gantinya - saya kira saya tidak terlalu suka kursor :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbarui Kueri dengan Subkueri Berkorelasi

  2. Mengarsipkan sejumlah besar data lama di SQL Server

  3. Hapus Padding Saat Mengirim Hasil Kueri dalam Email dari SQL Server (T-SQL)

  4. Khmer Unicode, Bahasa Inggris dan Microsoft SQL Server 2008 menghasilkan tanda tanya

  5. regex server sql