sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:mensaje 102, nivel 15, estado 1, línea 2 Sintaxis incorrecta cerca de '='

Creo que debe concatenar su declaración SQL como un todo, antes de ejecutarla:

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)

Por lo que recuerdo, no puede tener expresiones y cálculos dentro del EXEC comando:obtenga la declaración preparada de antemano, luego ejecútela

Además, no estoy del todo seguro de qué contienen esas variables tuyas:@DocID1 y @DocID2 - ¿Desea establecer su valor o tienen el nombre de otra variable para establecer?

Actualización: si realmente desea establecer los valores de @DocID1 y @DocID2 , entonces su consulta fue incorrecta al principio, entonces necesita algo como esto:

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)

pero entonces, esas dos variables están en el ámbito dentro el SQL ejecutado dinámicamente y no están disponibles para el "exterior" de su secuencia de comandos.