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

Откуда:
Сообщений: 196
Подскажите, насколько я понял используя WITH мы циклом проходим по всем отобранным записям.
А можно ли в каждой итерации выполнять несколько операций? Т.е. использовать блок BEGIN .. END?
Например эта функция компилируется
alter function fBranchDetail2()
returns @Res table
(name varchar(128) null)
as
begin
	with qwe(Name)
	as 
	(
		select name from BRANCH
	)
		insert into @Res values((select Name from qwe));
	return
end	
А функция
alter function fBranchDetail2()
returns @Res table
(name varchar(128) null)
as
begin
	declare @NewName as varchar(128);
	with qwe(Name)
	as 
	(
		select name from BRANCH
	)
	begin
		select @NewName = Name from qwe;
		set @NewName = @NewName + ' ! '; 
		insert into @Res values(@NewName);
	end;
	return
end	
Ругается на begin. Или в этом случае надо курсоры использовать?
10 окт 11, 19:14    [11415628]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по WITH  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
GTS_ST,

откуда взялась мысль про цикл? всю правду можно найти в справке
http://msdn.microsoft.com/ru-ru/library/ms175972.aspx
WITH обобщенное_табличное_выражение (Transact-SQL)
Задается временно именованный результирующий набор, называемый обобщенным табличным выражением (ОТВ). Он получается при выполнении простого запроса и определяется в области выполнения одиночной инструкции SELECT, INSERT, UPDATE, MERGE или DELETE.
а конкретно в вашем случае вообще можно без всяких cte записать просто

alter function fBranchDetail2()
returns table
as return
		select name + ' ! ' as name
                from BRANCH
10 окт 11, 19:36    [11415690]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по WITH  [new]
GTS_ST
Member

Откуда:
Сообщений: 196
Shakill,
Спасибо большое
10 окт 11, 19:42    [11415709]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по WITH  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Shakill
откуда взялась мысль про цикл?
Наверно, GTS_ST что-то слышал про рекурсивное CTE
10 окт 11, 20:34    [11415826]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить