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.