Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 INSERT after WITH  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
Здравствуйте!
Пробегаюсь рекурсивно по табличке...

Теперь нужно вставить полученные данные в другую таблицу, но как я понял, здесь можно только вызвать Select или Update. Как же быть с INSERT?

with Recur (Id, ParentId) as
(
  select  Id
  from T
  where ParentId is null

  union all

  select Id, ParentId
  from T
    join Recur on r.Id = T.ParentId
)
select Id, ParentId
from Recur r
18 мар 14, 11:28    [15743691]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
sanekoffice
Здравствуйте!
Пробегаюсь рекурсивно по табличке...

Теперь нужно вставить полученные данные в другую таблицу, но как я понял, здесь можно только вызвать Select или Update. Как же быть с INSERT?

with Recur (Id, ParentId) as
(
  select  Id
  from T
  where ParentId is null

  union all

  select Id, ParentId
  from T
    join Recur on r.Id = T.ParentId
)
insert ...
select Id, ParentId
from Recur r
18 мар 14, 11:34    [15743754]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
Glory
Member

Откуда:
Сообщений: 104760
sanekoffice
Как же быть с INSERT?

Так же, как с SELECT, UPDATE, MERGE, or DELETE - просто написать эту команду
18 мар 14, 11:36    [15743761]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
бл...
Это первое о чем я подумал, но в прошлый раз ошибку конструкции выдовал
Щас сработало. Спасибо
18 мар 14, 11:39    [15743792]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
sanekoffice
бл...
Это первое о чем я подумал, но в прошлый раз ошибку конструкции выдовал
Щас сработало. Спасибо
Достаточно было прочитать
http://msdn.microsoft.com/ru-ru/library/ms174335(v=sql.100).aspx
18 мар 14, 11:41    [15743804]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
А почему так?

Попробовал вставить это в только созданную временную табличку типа @

Неправильный синтаксис около ключевого слова "with". Если данная инструкция является обобщенным табличным выражением или предложением xmlnamespaces, предыдущую инструкцию необходимо завершать точкой с запятой.


Вместо временной беру настоящую и все ОК.

P.S. Никаких ошибок при работе с этой табличкой вне этого блока нет. Ошибка именно при работе с WITH
18 мар 14, 11:53    [15743924]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
sanekoffice,

имя временной таблицы начинается с #, а не @
Покажите, однако, как Вы делаете.
18 мар 14, 11:55    [15743936]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
ОК переменная типа таблицы а не временная.

declare @tRecur (id int, idParent int)
with Recur (Id, ParentId) as
(
  select  Id
  from T
  where ParentId is null

  union all

  select Id, ParentId
  from T
    join Recur on r.Id = T.ParentId
)
insert into @tRecur 
select Id, ParentId
from Recur r
18 мар 14, 11:58    [15743987]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
Glory
Member

Откуда:
Сообщений: 104760
sanekoffice
Попробовал вставить это в только созданную временную табличку типа @

Неправильный синтаксис около ключевого слова "with". Если данная инструкция является обобщенным табличным выражением или предложением xmlnamespaces, предыдущую инструкцию необходимо завершать точкой с запятой.

И вы прочитали это сообщение то ?
18 мар 14, 11:59    [15743996]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
sanekoffice
ОК переменная типа таблицы а не временная.

declare @tRecur (id int, idParent int)
with Recur (Id, ParentId) as
(
  select  Id
  from T
  where ParentId is null

  union all

  select Id, ParentId
  from T
    join Recur on r.Id = T.ParentId
)
insert into @tRecur 
select Id, ParentId
from Recur r
Поставьте точку с запятой уже!
(как Glory говорит).
18 мар 14, 12:01    [15744017]     Ответить | Цитировать Сообщить модератору
 Re: INSERT after WITH  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
Так...
Стираем этот топик. Ибо палево :)
18 мар 14, 12:02    [15744031]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить