Вярвам, че трябва да свържете заедно своя SQL израз като цяло, преди да го изпълните:
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)
Доколкото си спомням, не можете да имате изрази и изчисления вътре в EXEC
команда - подгответе оператора предварително, след което го изпълнете
Освен това не съм напълно сигурен какво съдържат тези ваши променливи - @DocID1
и @DocID2
- искате ли да зададете тяхната стойност, или те съдържат името на друга променлива за задаване??
Актуализация: ако всъщност искате да зададете стойностите на @DocID1
и @DocID2
, тогава вашата заявка е грешна в началото - тогава имате нужда от нещо подобно:
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)
но тогава тези две променливи са с обхват вътре динамично изпълнявания SQL и не са достъпни за "външната" част на вашия скрипт.