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

Menjalankan kueri sp_executesql mengharapkan parameter @ pernyataan

Proc tersimpan "sp_executesql" mengharapkan parameter string tunggal @statement untuk dieksekusi.

String Anda benar-benar rusak di sini ..... Anda perlu mengawali setiap bagian string "tetap" dengan N'......' untuk menjadikannya string Unicode, tetapi ini jelas tidak benar terjadi di sini.

Saya rasa Anda mungkin ingin mencoba ini:

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

Apakah ini berhasil dan melakukan apa yang Anda harapkan??

Penjelasan:N'.........' membatasi seluruh string yang berisi pernyataan SQL. Setiap tanda kutip di dalam yang harus diduplikasi ("lolos"). Saya harap saya memahami logika Anda dengan benar.

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. Bagaimana cara membandingkan jika dua string berisi kata-kata yang sama di T-SQL untuk SQL Server 2008?

  2. Buat tabel Peran dan Keanggotaan ASP.NET ke aplikasi saya

  3. Properti dependen dalam ReferentialConstraint dipetakan ke kolom yang dihasilkan toko

  4. Cara terhubung ke SQL Server dengan otentikasi windows dari Node.JS menggunakan modul mssql

  5. Pernyataan ALTER TABLE bertentangan