sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:Msg 102, Nivå 15, Tillstånd 1, Rad 2 Fel syntax nära '='

Jag tror att du måste sammanfoga din SQL-sats som helhet innan du kör den:

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)

Såvitt jag minns kan du inte ha uttryck och beräkningar i EXEC kommando - förbered satsen i förväg och kör den sedan

Dessutom är jag inte helt säker på vad dessa variabler innehåller - @DocID1 och @DocID2 - vill du ställa in deras värde, eller har de namnet på en annan variabel som ska ställas in?

Uppdatering: om du faktiskt ville ställa in värdena för @DocID1 och @DocID2 , då var din fråga fel till att börja med - då behöver du något sånt här:

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)

men sedan är dessa två variabler omfångade inuti den dynamiskt körda SQL-koden och är inte tillgängliga för "utsidan" av ditt skript.



  1. Hur kan jag använda funktionen i min mysql-fråga?

  2. Hur visar man hierarkiska NESTED SET-data med PHP?

  3. other_user_id-parametern fungerar inte vid körning, jag vet inte varför

  4. Hur implementerar man kom ihåg mig-funktionen?