Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

con trỏ với sp_executesql và các tham số

Tôi nghĩ điều này sẽ thực hiện được công việc (và đây là bản trình diễn trực tiếp ):

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

Tôi đã loại bỏ con trỏ hoàn toàn và thay vào đó sử dụng vòng lặp while - Tôi đoán là tôi không thích con trỏ đến vậy :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL lấy nút gốc trong hệ thống phân cấp

  2. Cách áp dụng màu sắc trong đầu ra powershell

  3. So sánh hiệu suất SQL Server CE 4.0

  4. Khám phá giao diện cửa hàng truy vấn SQL Server 2016

  5. Lấy kinh độ và vĩ độ gần nhất từ ​​bảng cơ sở dữ liệu MSSQL?