sql >> Database >  >> RDS >> Sqlserver

Uitvoeren van sp_executesql-query verwacht parameter @statement

Het "sp_executesql" opgeslagen proces verwacht dat een enkele stringparameter @statement wordt uitgevoerd.

Je string is hier totaal niet in de war..... je moet alle "vaste" stringdelen voorafgaan met een N'......' om ze Unicode-strings te maken, maar dit is hier zeker niet het geval.

Ik denk dat je dit misschien wilt proberen:

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

Werkt dit en doet het wat je ervan verwacht??

Uitleg:de N'.........' begrenst de hele string die de SQL-instructie bevat. Elke apostrof binnenin die moet worden gedupliceerd ("ontsnapt"). Ik hoop dat ik je logica goed heb begrepen.

Marc



  1. T-SQL haalt hoofdknooppunt in hiërarchie

  2. SQL Server SELECT-instructies die blokkering veroorzaken

  3. Kan max_open_files voor Mysql max-verbindingen in Ubuntu 15 niet verhogen

  4. Cascade bij verwijderen of triggers gebruiken?