Domnívám se, že před jeho provedením musíte zřetězit svůj příkaz SQL jako celek:
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)
Pokud si vzpomínám, nemůžete mít výrazy a výpočty uvnitř EXEC
příkaz - připravte příkaz předem a poté jej proveďte
Také si nejsem úplně jistý, co ty vaše proměnné obsahují - @DocID1
a @DocID2
- chcete nastavit jejich hodnotu, nebo obsahují název jiné proměnné k nastavení??
Aktualizace: pokud jste skutečně chtěli nastavit hodnoty @DocID1
a @DocID2
, pak byl váš dotaz zpočátku nesprávný - pak potřebujete něco takového:
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)
ale pak jsou tyto dvě proměnné vymezeny uvnitř dynamicky spouštěné SQL a nejsou dostupné „vně“ vašeho skriptu.