Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server :Msg 102, Niveau 15, État 1, Ligne 2 Syntaxe incorrecte près de '='

Je pense que vous devez concaténer votre instruction SQL dans son ensemble avant de l'exécuter :

DECLARE 
    @TableA nvarchar(255)='TableA',
    @DOCID1 nvarchar(MAX),
    @SqlStmt NVARCHAR(500),
    @DOCID2 int;

SET @SqlStmt = N'SELECT TOP (1) ' + @DOCID1 + N' = DOCID1, ' + @DOCID2 + N' = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';

EXEC (@SqlStmt)

Autant que je me souvienne, vous ne pouvez pas avoir d'expressions et de calculs dans le EXEC commande - préparez l'instruction à l'avance, puis exécutez-la

De plus, je ne suis pas tout à fait sûr de ce que contiennent vos variables - @DocID1 et @DocID2 - voulez-vous définir leur valeur, ou contiennent-ils le nom d'une autre variable à définir ? ?

Mise à jour : si vous vouliez réellement définir les valeurs de @DocID1 et @DocID2 , alors votre requête était erronée au départ - alors vous avez besoin de quelque chose comme ceci :

DECLARE 
    @TableA nvarchar(255) = 'TableA',
    @SqlStmt NVARCHAR(500);

SET @SqlStmt = 
    N'DECLARE @DocID1 NVARCHAR(MAX), @DocID2 INT; ' +
    N'SELECT TOP (1) @DOCID1 = DOCID1, @DOCID2 = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';

EXEC (@SqlStmt)

mais ensuite, ces deux variables sont portées à l'intérieur le SQL exécuté dynamiquement et ne sont pas disponibles pour "l'extérieur" de votre script.