Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server:Msg 102, ниво 15, състояние 1, ред 2 Неправилен синтаксис близо до '='

Вярвам, че трябва да свържете заедно своя 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 и не са достъпни за "външната" част на вашия скрипт.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на списък с таблици и изгледи в SQL Server с помощта на T-SQL (sp_tables)

  2. Връзката беше успешно установена със сървъра, но след това възникна грешка по време на ръкостискането преди влизане

  3. Какво е DTU в Azure SQL база данни и как да разберем колко ни трябва

  4. Брой дни от седмицата в даден месец

  5. Създаване на групи от последователни дни, отговарящи на даден критерий