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

Откуда:
Сообщений: 5
Зделал функцию:
CREATE FUNCTION getIdList (@ex_cond nvarchar(400))
RETURNS varchar(4000) AS
BEGIN
DECLARE @idlist varchar(4000)
DECLARE @sql_exec nvarchar(4000)
SET @idlist = ''
SET @sql_exec = 'SELECT @idlist = @idlist + CASE WHEN @idlist <> '''' THEN '','' ELSE '''' END +'+@ex_cond

EXEC sp_executesql
@sql_exec,
N'@idlist varchar(4000) out',
@idlist out

return @idlist
END

при бызове:
select [dbo].[getIdList]('....')
выдает
Error:
Server: Msg 557, Level 16, State 2, Procedure getIdList, Line 9
Only functions and extended stored procedures can be executed from within a function.

В чем суть?
18 май 05, 19:07    [1552980]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
Only functions and extended stored procedures can be executed from within a function.
18 май 05, 19:07    [1552983]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
EXEC sp_executesql - нельзя в функциях вообще
18 май 05, 19:42    [1553040]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
AdrianM
Member

Откуда:
Сообщений: 5
Но sp_executesql и есть extended stored procedures по краинеи мере там лежит
19 май 05, 09:54    [1553871]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
AdrianM
Member

Откуда:
Сообщений: 5
Если нет то как ресшить задачю:
Фунция которои задается сеелкт типа:
select id from table1
и должна возвратить список ID: 134,34,78,21344,56756.... как STRING (varchar)
????????????????????????????????
19 май 05, 09:58    [1553896]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
FAQ
19 май 05, 10:14    [1553970]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
AdrianM
Member

Откуда:
Сообщений: 5
FAQ - не вижу решения.

селект задается фунции как пeременная (ex_cond).
а в функции изменяется ... SET @sql_exec = 'SELECT @idlist = @idlist + CASE WHEN @idlist <> '''' THEN '','' ELSE '''' END +'+@ex_cond.
19 май 05, 12:32    [1554816]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
TaiNe
Member

Откуда:
Сообщений: 123
[url=https://www.sql.ru/faq/faq_topic.aspx?fid=130 ]Вам наверное это поможет[/url]
19 май 05, 12:51    [1554917]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
TaiNe
Member

Откуда:
Сообщений: 123
ОЙ
Вам наверное это поможет
19 май 05, 12:53    [1554933]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
AdrianM
Member

Откуда:
Сообщений: 5
Повториусь:
SQL динамическии, задается как параметр ....
19 май 05, 13:10    [1555063]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
AdrianM
Повториусь:
SQL динамическии, задается как параметр ....

Придется пересмотреть постановку задачи
19 май 05, 13:14    [1555083]     Ответить | Цитировать Сообщить модератору
 Re: Хепонятноая оышибка в функции  [new]
Taffy
Member

Откуда:
Сообщений: 20501
Или отказаться от использования функции...
19 май 05, 13:17    [1555112]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить