Saya yakin Anda harus menggabungkan pernyataan SQL Anda secara keseluruhan, sebelum menjalankannya:
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)
Sejauh yang saya ingat, Anda tidak dapat memiliki ekspresi dan perhitungan di dalam EXEC
perintah - siapkan pernyataan sebelumnya, lalu jalankan
Juga, saya tidak sepenuhnya yakin apa yang dimiliki variabel Anda itu - @DocID1
dan @DocID2
- apakah Anda ingin menetapkan nilainya, atau apakah mereka menyimpan nama variabel lain untuk disetel??
Pembaruan: jika Anda benar-benar ingin menetapkan nilai @DocID1
dan @DocID2
, maka kueri Anda salah untuk memulai - maka Anda memerlukan sesuatu seperti ini:
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)
tapi kemudian, kedua variabel tersebut dicakup di dalam SQL yang dijalankan secara dinamis dan tidak tersedia untuk "di luar" skrip Anda.