Неправильный синтаксис рядом с ‘(‘

#sql-server

#sql-server

Вопрос:

Я получил эту ошибку

Неправильный синтаксис рядом с ‘(‘

Я не смог найти, в чем проблема с синтаксисом. что не так? Как это исправить?

 INSERT INTO Recurring (WO_DespatchName, 
                       FORMAT(start_date, 'dd/MMM/yyyy hh:mm tt') AS start_date, 
                       WO_MaidName, WO_CustomerName, WO_Address, 
                       FORMAT (end_date, 'dd/MMM/yyyy hh:mm tt') AS end_date,  
                       WO_ContactNumber, WO_Addresss) 
VALUES (@WO_DespatchName, @start_date, 
        @WO_MaidName, @WO_CustomerName, @WO_Address,
        @end_date, @WO_ContactNumber, @WO_Addresss); 

SELECT SCOPE_IDENTITY();
  

Комментарии:

1. Отсутствует контекст, IMO. Являются ли они ; допустимыми в выбранной вами среде, где вы выполняете инструкции SQL?

2. У вас не может быть таких вещей, как FORMAT и AS в списке столбцов после INSERT INTO инструкции — только имена столбцов (никаких выражений, ничего больше)

3. попробуйте CAST() вместо FORMAT()

4. @Eds, проблема не в функциях Format или Cast, пользователи использовали функцию FORMAT в неправильном месте

Ответ №1:

Предполагается, что вы используете FORMAT into values . Попробуйте обновить свой запрос, как показано ниже.

 INSERT INTO Recurring (WO_DespatchName, 
                       start_date, 
                       WO_MaidName, WO_CustomerName, WO_Address, 
                       end_date,  
                       WO_ContactNumber, WO_Addresss) 
VALUES (@WO_DespatchName, 
        FORMAT(@start_date, 'dd/MMM/yyyy hh:mm tt'), 
        @WO_MaidName, @WO_CustomerName, @WO_Address,
        FORMAT (@end_date, 'dd/MMM/yyyy hh:mm tt'), 
        @WO_ContactNumber, @WO_Addresss); 

SELECT SCOPE_IDENTITY();