sql >> Database >  >> RDS >> Sqlserver

Dynamische MS SQL-variabele wordt onjuist geparseerd

  1. Gebruik de juiste typen SYSNAME voor id's, NVARCHAR(MAX) voor vragen
  2. Gebruik REPLACE in plaats van aaneenschakelen is het veel gemakkelijker om fouten op te sporen, vooral als je letterlijke tekenreeksen nodig hebt
  3. Overweeg het gebruik van QUOTENAME functie

Code:

DECLARE 
    @tableName  SYSNAME,
    @columnName SYSNAME,
    @prompt     VARCHAR(20),
    @dynSQL     NVARCHAR(MAX);

SET @tableName  = QUOTENAME('A1-ExciseESN');
SET @columnName = QUOTENAME('Anode Excise ESN (A1)');

SET @dynSQL = 
N'INSERT INTO  <tableName> 
 ([trav num], <columnName>)
Select [trav num], <columnName>
FROM [temprmi$] t1
PIVOT(min([Lvl1 Trace Data])
FOR [Prompt Text] IN (<columnName>)
   ) AS PVTTable
     where <columnName> is not null 
        and [trav num] not in (select [trav num] from <tableName> )'

SET @dynSQL = REPLACE(REPLACE(@dynSQL, '<tableName>', @tableName),
               '<columnName>', @columnName);

PRINT @dynSQL;

LiveDemo

Uitgang:

INSERT INTO  [A1-ExciseESN] 
 ([trav num], [Anode Excise ESN (A1)])
Select [trav num], [Anode Excise ESN (A1)]
FROM [temprmi$] t1
PIVOT(min([Lvl1 Trace Data])
FOR [Prompt Text] IN ([Anode Excise ESN (A1)])
   ) AS PVTTable
     where [Anode Excise ESN (A1)] is not null 
       and [trav num] not in (select [trav num] from [A1-ExciseESN] )


  1. Zorgt Connection Pooling ervoor dat Java Swing Application sneller werkt voor externe MySQL-database?

  2. Hoe schrijf ik een Django-query die datumberekeningen uitvoert wanneer deze wordt uitgevoerd als PostGres SQL?

  3. retourneer één waarde uit de database met mysql php pdo

  4. Volgorde van uitvoering van SQL Server-instructies