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

Chạy truy vấn sp_executesql yêu cầu tham số @statement

Proc được lưu trữ "sp_executesql" yêu cầu một tham số chuỗi duy nhất @statement thực thi.

Chuỗi của bạn hoàn toàn không ổn ở đây ..... bạn cần phải thêm tiền tố bất kỳ phần chuỗi "cố định" nào bằng N '......' để tạo thành chuỗi Unicode, nhưng điều này chắc chắn không đúng trường hợp ở đây.

Tôi nghĩ bạn có thể muốn thử điều này:

DECLARE @a INT 
DECLARE @b VARCHAR(2)

SET @a = 1

DECLARE @statement NVARCHAR(500)

WHILE @a < 30
BEGIN
    SET @b = CAST(@a AS VARCHAR(2))

    SET @statement = 
        N'update source_temp set pmt_90_day = pmt_90_day + ' + 
             'convert(money, ''trans_total_' + @b + ''') ' + 
             'where convert(datetime, ''effective_date_' + @b + ''')' +
             ' <= DATEADD(DAY, 90, ORSA_CHARGE_OFF_DATE) ' +
             'and DRC_FLAG_' + @b + ' = ''C'''

    exec sp_executesql @statement

    SET @a = @a + 1
END

Điều này có hoạt động không và làm những gì bạn mong đợi nó làm ??

Giải thích:N '.........' phân định toàn bộ chuỗi chứa câu lệnh SQL. Bất kỳ dấu nháy đơn nào bên trong phải được sao chép ("thoát"). Tôi hy vọng tôi đã hiểu đúng logic của bạn.

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách xoay nhiều cột mà không cần tổng hợp

  2. Làm cách nào để trả về hai cột từ bảng đầu tiên nếu chỉ một cột khớp một phần với cột thứ hai?

  3. Sử dụng mã định danh duy nhất (GUID) hay mã định danh cho cột nhận dạng sẽ tốt hơn?

  4. Cách bỏ tất cả các Khóa chính khỏi tất cả các bảng trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 65

  5. Cách chọn mọi hàng trong đó giá trị cột KHÔNG bị phân biệt