Название: ошибка CTE - PullRequest
0 голосов
/ 23 июня 2010

Я получаю эти ошибки при выполнении следующего SQL, пожалуйста, помогите мне

;WITH myCTE AS
(Select mcisi.* from
coke_packaged_item AS spi
JOIN coke_item AS si
  ON si.coke_id = spi.coke_id
  AND si.coke_item_id = spi.coke_item_id
  AND si.shipper_flag = 'n'
JOIN merch_cat_import_coke_item AS mcisi
  ON mcisi.coke_id = si.coke_id
  AND mcisi.resolved_coke_item_id = si.coke_item_id
  AND mcisi.cat_import_event_id = @cat_import_event_id
  AND mcisi.accept_flag = 'y')


UPDATE coke_packaged_item
SET packaged_in_uom_id = (select resolved_packaged_unit_of_measure_id from myCTE where myCTE.coke_id = coke_id) 
  priced_in_uom_id = COALESCE((select resolved_weight_unit_of_measure_idfrom myCTE.coke_id = coke_id), @each_uom_id), 
  name = (select packaged_item_name from myCTE where myCTE.coke_id = coke_id), 
  package_weight = (select package_weight from myCTE where myCTE.coke_id = coke_id) ,
  status_code = (select status_code from myCTE where myCTE.coke_id = coke_id) ,
  last_modified_user_id = (select CASE WHEN last_modified_user_id = 42 THEN @posting_user_id ELSE last_modified_user_id END from myCTE where myCTE.coke_id = coke_id),
  last_modified_timestamp = CURRENT_TIMESTAMP
and exists (select coke_id from coke_item AS si
  where si.coke_id = spi.coke_id
  AND si.coke_item_id = spi.coke_item_id
  AND si.shipper_flag = 'n')
and exists (select coke_id from merch_cat_import_coke_item AS mcisi)
  where mcisi.coke_id = si.coke_id
  AND mcisi.resolved_coke_item_id = si.coke_item_id
  AND mcisi.cat_import_event_id = @cat_import_event_id
  AND mcisi.accept_flag = 'y'

Сообщение об ошибке:

Msg 102, Level 15, State 1, Procedure Sp_Name, Line 44
Incorrect syntax near 'priced_in_uom_id'.
Msg 102, Level 15, State 1, Procedure Sp_Name, Line 44
Incorrect syntax near '.'.
Msg 102, Level 15, State 1, Procedure Sp_Name, Line 45
Incorrect syntax near ','.
Msg 102, Level 15, State 1, Procedure Sp_Name, Line 46
Incorrect syntax near ','.
Msg 102, Level 15, State 1, Procedure Sp_Name, Line 47
Incorrect syntax near ','.
Msg 102, Level 15, State 1, Procedure Sp_Name, Line 48
Incorrect syntax near ','.
Msg 156, Level 15, State 1, Procedure Sp_Name, Line 54
Incorrect syntax near the keyword 'and'.
Msg 156, Level 15, State 1, Procedure Sp_Name, Line 55
Incorrect syntax near the keyword 'where'.

Ответы [ 4 ]

2 голосов
/ 23 июня 2010

Мой друг, я искал @ твой код, и до сих пор все, что я действительно нашел, это ошибки ввода.

Например, * в предложении set нет запятой междуустановите для packaged_in_uom_id и priced_in_uom_id * в подзапросе для priced_in_uom_id, перед предложением from нет места.

Мой совет - принять стилизованный шаблон для написания SQL.Шаблон, который я использую, говорит, что * каждое предложение идет в отдельной строке - выберите, где, упорядочить по, группировать по *, каждый столбец идет по отдельной строке * список запятых идет ДО элемента

, когда я началотформатировав код с помощью этих шаблонов, я начал видеть проблемы.

Я применяю эти шаблоны с помощью RedGate SQL Refactor.Это лучший форматировщик кода SQL, который я нашел.

0 голосов
/ 23 июня 2010

Вы пропустили запятую в строке 44 после myCTE.coke_id = coke_id)

0 голосов
/ 23 июня 2010

Вы пропустили запятую здесь

SET packaged_in_uom_id = (select resolved_packaged_unit_of_measure_id from myCTE where myCTE.coke_id = coke_id) ,

Также на следующей строке ниже пропущен пробел перед from и where

select resolved_weight_unit_of_measure_idfrom myCTE.coke_id = coke_id

Могут быть и другие ошибки. Я оставлю вас, чтобы найти их

@ SmartestVEGA Сегодня вы опубликовали множество подобных вопросов.Я предлагаю приобрести копию SQL2008 Management Studio с проверкой синтаксиса.Я вставил ваш запрос и смог увидеть проблему очень быстро.

0 голосов
/ 23 июня 2010

Похоже, вам не хватает запятой в конце первой строки SET

SET packaged_in_uom_id = (select resolved_packaged_unit_of_measure_id from myCTE where myCTE.coke_id = coke_id),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...