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

Откуда:
Сообщений: 202
Приветствую ув. знатоки !

подскажите почему не работает такой КОД ?

declare @i int;
     set @i = 1;
;with A as
(select '1' as 'a')


  while (@i <= 20)
  begin
       print @i
        set @i = @i + 1
  end

Ошибка : Incorrect syntax near the keyword 'while'.

без CTE все отлично работает..
27 май 11, 13:31    [10719303]     Ответить | Цитировать Сообщить модератору
 Re: CTE + LOOP  [new]
yado4eg
Member

Откуда:
Сообщений: 202
"Microsoft SQL Server 2005 - 9.00.4053.00 (X64) 
	May 26 2009 14:13:01 
	Copyright (c) 1988-2005 Microsoft Corporation
	Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)"
27 май 11, 13:32    [10719316]     Ответить | Цитировать Сообщить модератору
 Re: CTE + LOOP  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Потому что вы только половину запроса с cte написали.
27 май 11, 13:32    [10719317]     Ответить | Цитировать Сообщить модератору
 Re: CTE + LOOP  [new]
yado4eg
Member

Откуда:
Сообщений: 202
Гавриленко Сергей Алексеевич,

ну а по конкретнее?

я всегда так CTE использую.
27 май 11, 13:36    [10719363]     Ответить | Цитировать Сообщить модератору
 Re: CTE + LOOP  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
yado4eg
Гавриленко Сергей Алексеевич,

ну а по конкретнее?

я всегда так CTE использую.
Да ну что вы сказки-то рассказываете?

WITH common_table_expression (Transact-SQL) ( ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/27cfb819-3e8d-4274-8bbe-cbbe4d9c2e23.htm )
A CTE must be followed by a single SELECT, INSERT, UPDATE, or DELETE statement that references some or all the CTE columns.
27 май 11, 13:40    [10719403]     Ответить | Цитировать Сообщить модератору
 Re: CTE + LOOP  [new]
yado4eg
Member

Откуда:
Сообщений: 202
Гавриленко Сергей Алексеевич,

ok. понял.

но у меня что-то типа

declare @i int;
     set @i = 1;
;with A(val) as
(select '1' as 'a')

  while (@i <= 20)
  begin
      ...
      select
      from A
      ...
  end

можно как-то выкрутиться из положения ?
27 май 11, 13:44    [10719440]     Ответить | Цитировать Сообщить модератору
 Re: CTE + LOOP  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
declare @i int;
     set @i = 1;


  while (@i <= 20)
  begin
      ...
      ;with A(val) as
      (select '1' as 'a')
      select
      from A
      ...
  end
27 май 11, 13:50    [10719493]     Ответить | Цитировать Сообщить модератору
 Re: CTE + LOOP  [new]
yado4eg
Member

Откуда:
Сообщений: 202
Гавриленко Сергей Алексеевич,

гыыы :) работает :) THX
27 май 11, 13:53    [10719519]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить