Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 inline function + option(maxrecursion 0)  [new]
fff_fff
Guest
разбирала функцию iljy (скалярную),
нашла option(maxrecursion 0).
поняла, что в моей функции тоже это надо,
а то она больше чем на 100 частей не побьет.
но моя функция inline, там не проходит option(maxrecursion 0).
как это обойти?

функция разбивает на куски по @part_size символов:

create function dbo.IFN_split_varchar_into_table
(	
	@s nvarchar(max),
	@part_size int 
)
returns table
as
return 
with cte as
(select SUBSTRING(@s, 1, @part_size) as part, 1 as pos, LEN(@s) as l 
union all 
select SUBSTRING(@s, pos + @part_size, @part_size) as part, pos + @part_size as pos, l  
from cte
where pos + @part_size <= l)

select pos / @part_size + 1 as part_num, part 
from cte
option(maxrecursion 0)



Msg 156, Level 15, State 1, Procedure IFN_split_varchar_into_table, Line 19
Incorrect syntax near the keyword 'option'.


дописывать при вызове, так это я помню, что надо,
а кто после меня будет вызывать?
хотелось бы впихнуть в функцию
7 фев 12, 16:39    [12048451]     Ответить | Цитировать Сообщить модератору
 Re: inline function + option(maxrecursion 0)  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

переделать из инлайн в мультистейтмент?

Posted via ActualForum NNTP Server 1.5

7 фев 12, 16:50    [12048566]     Ответить | Цитировать Сообщить модератору
 Re: inline function + option(maxrecursion 0)  [new]
iljy
Member

Откуда:
Сообщений: 8711
fff_fff,

вам тут совершенно не нужно CTE.
declare @s nvarchar(max)
select @s =s from OPENROWSET(BULK 'E:\1\mess_16000385.txt', SINGLE_NCLOB) t(s)

declare @part_size int = 32000

select substring(@s, number * @part_size + 1, @part_size)
from master..spt_values
where type = 'P' and number between 0 and (LEN(@s)-1) / @part_size

Вместо spt_values лучше завести свою таблицу чисел.
7 фев 12, 16:50    [12048570]     Ответить | Цитировать Сообщить модератору
 Re: inline function + option(maxrecursion 0)  [new]
aleks2
Guest
1. Никак. Только памятная надпись.
2. Нафега рекурсия в такой задаче?
7 фев 12, 16:51    [12048576]     Ответить | Цитировать Сообщить модератору
 Re: inline function + option(maxrecursion 0)  [new]
fff_fff
Guest
iljy,

спасибо. переделала
7 фев 12, 17:39    [12049124]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить