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

Откуда: Владивосток
Сообщений: 132
Здравствуйте!
Помогите разобраться. Есть функция. Весь ее код приводить не буду, ибо он только создает SQL запрос. Загвоздка в том, что при компиляции

ALTER FUNCTION [dbo].[SummPoZay]
(
	@doc_id bigint
)
RETURNS numeric(18,2)
AS
BEGIN

................................

DECLARE @rezult decimal(18,2)
DECLARE @ParmDefinition NVARCHAR(500)
SET @ParmDefinition = N'@summ decimal(18,2) OUTPUT'
insert into @tb exec sp_executesql
				@sql,
				@ParmDefinition,
				@rezult OUTPUT


выдается следующее исключение:

Сообщение 443, уровень 16, состояние 14, процедура SummPoZay, строка 53
Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие, в функции.


если выполнить все тоже самое просто так (без функции) все окей. результат правильный.
9 июн 13, 18:13    [14411720]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
ughunter,

Прочитайте каи ограничения на функции. Кстати функци в скуле это не те функции, что в императивных языках.
9 июн 13, 18:27    [14411755]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Другой вариант. Компилируется но не выполняется

DECLARE @rezult decimal(18,2)
DECLARE @ParmDefinition NVARCHAR(500)
SET @ParmDefinition = N'@rezult decimal(18,2) OUTPUT'
--insert into @tb 
exec sp_executesql
				@sql,
				@ParmDefinition,
				@rezult OUTPUT


select [dbo].[SummPoZay](3403)
Сообщение 557, уровень 16, состояние 2, строка 1
Внутри функции можно вызывать только функции и некоторые расширенные хранимые процедуры.
9 июн 13, 19:17    [14411856]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
ughunter,

мы заботимся о слепых
9 июн 13, 19:24    [14411867]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Ken@t
ughunter,

мы заботимся о слепых


невероятно содержательно
9 июн 13, 19:34    [14411887]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Всегда думал что форум это ответы на конкретные вопросы. А не ссылки на маны и прочее. Я тоже могу писать "спроси гугл" давать куча ссылок и тд. меня то в данном случае интересовало почему так происходит и как это обойти если возможно
9 июн 13, 19:36    [14411892]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37202
ughunter
Всегда думал что форум это ответы на конкретные вопросы. А не ссылки на маны и прочее. Я тоже могу писать "спроси гугл" давать куча ссылок и тд. меня то в данном случае интересовало почему так происходит и как это обойти если возможно
В хелпе все написано. Не нравится читать хелп - бросайте программировать.
9 июн 13, 19:56    [14411928]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить