sql >> Database teknologi >  >> RDS >> Sqlserver

Kørsel af sp_executesql-forespørgsel forventer parameter @statement

Den "sp_executesql" lagrede proc forventer, at en enkelt strengparameter @statement udføres.

Din streng er fuldstændig ude af stand her..... du skal præfiksere alle "faste" strengdele med et N'......' for at gøre dem til Unicode-strenge, men det er bestemt ikke korrekt tilfældet her.

Jeg tror, ​​du måske vil prøve dette:

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

Virker dette og gør det, hvad du forventer, det skal gøre?

Forklaring:N'.........' afgrænser hele strengen, som indeholder SQL-sætningen. Enhver apostrof indeni, der skal duplikeres ("undslippet"). Jeg håber, jeg har forstået din logik korrekt.

Marc



  1. Returner værdi fra sql-script til shell-script

  2. Ret problem med SQL-databasegendannelse afventer adgang nægtet

  3. Mysql-funktion, der returnerer en værdi fra en forespørgsel

  4. Effekter af at opdatere en tabel med rækker fra utf8_turkish_ci til utf8_general_ci?