sql >> Database >  >> RDS >> Sqlserver

SQL Server:Msg 102, Level 15, State 1, Line 2 Onjuiste syntaxis bij '='

Ik geloof dat je je SQL-statement als geheel moet samenvoegen voordat je het uitvoert:

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)

Voor zover ik me herinner, kun je geen uitdrukkingen en berekeningen hebben binnen de EXEC commando - maak het statement van tevoren klaar en voer het uit

Ik weet ook niet helemaal zeker wat die variabelen van jou bevatten - @DocID1 en @DocID2 - wil je hun waarde instellen, of hebben ze de naam van een andere variabele om in te stellen??

Bijwerken: als u daadwerkelijk de waarden van @DocID1 . wilt instellen en @DocID2 , dan was je vraag in het begin verkeerd - dan heb je zoiets als dit nodig:

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)

maar dan zijn die twee variabelen binnen de dynamisch uitgevoerde SQL en zijn niet beschikbaar voor de "buitenkant" van uw script.



  1. Gegevenstype vereist in een mysql voor een datum die dag-maand-jaar bevat

  2. Mysql:bezoekfrequentie berekenen

  3. Alternatieven voor array_agg()?

  4. Hoe een enorme panda's-dataframe in een MySQL-tabel invoegen met een parallelle invoegverklaring?