Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server :Msg 102, Level 15, State 1, Line 2 Sintaks salah di dekat '='

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MSSQL cast( [varcharColumn] to int) di SELECT dieksekusi sebelum klausa WHERE menyaring nilai buruk

  2. PILIH KE variabel tabel di T-SQL

  3. SQL Server 2008 Hasilkan Serangkaian waktu tanggal

  4. Tally Table untuk memasukkan tanggal yang hilang di antara dua tanggal? SQL

  5. Menjelajahi Opsi Tunggu Kunci Prioritas Rendah di SQL Server 2014 CTP1