Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:komunikat 102, poziom 15, stan 1, wiersz 2 Nieprawidłowa składnia w pobliżu „=”

Uważam, że przed wykonaniem instrukcji SQL należy połączyć ze sobą całość:

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)

O ile pamiętam, nie można mieć wyrażeń i obliczeń wewnątrz EXEC polecenie - przygotuj wcześniej przygotowaną instrukcję, a następnie ją wykonaj

Ponadto nie jestem do końca pewien, co zawierają te twoje zmienne - @DocID1 i @DocID2 - chcesz ustawić ich wartość, czy przechowują nazwę innej zmiennej do ustawienia??

Aktualizacja: jeśli rzeczywiście chcesz ustawić wartości @DocID1 i @DocID2 , to zapytanie było błędne na początku - potrzebujesz czegoś takiego:

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 te dwie zmienne są objęte zakresem wewnątrz dynamicznie wykonywany kod SQL i nie jest dostępny „na zewnątrz” skryptu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MS SSQL:Jak używać przypadku, gdy jako parametr exec

  2. Wyświetl listę wszystkich kolumn dopuszczających wartość null w bazie danych programu SQL Server

  3. SQL Server Like Query nie uwzględnia wielkości liter

  4. Jak z utworzonych tabel mogę zrobić tabelę harmonogramu dla instruktora?

  5. Jak mogę zablokować tabelę podczas odczytu przy użyciu Entity Framework?