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

SQL Server:Msg 102, livello 15, stato 1, riga 2 sintassi errata vicino a '='

Credo che tu debba concatenare insieme la tua istruzione SQL nel suo insieme, prima di eseguirla:

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)

Per quanto mi ricordo, non puoi avere espressioni e calcoli all'interno di EXEC comando - prepara l'istruzione in anticipo, quindi eseguila

Inoltre, non sono del tutto sicuro di cosa contengano quelle tue variabili - @DocID1 e @DocID2 - vuoi impostarne il valore o contengono il nome di un'altra variabile da impostare??

Aggiornamento: se volevi effettivamente impostare i valori di @DocID1 e @DocID2 , quindi la tua query era sbagliata all'inizio, quindi hai bisogno di qualcosa del genere:

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)

ma poi, queste due variabili hanno l'ambito dentro l'SQL eseguito dinamicamente e non sono disponibili all'"esterno" del tuo script.