Sql server 在多标量表值函数中调用存储过程?
有没有办法像这样调用多标量表值函数中的存储过程 注意:此查询返回错误: 在函数中无效使用副作用运算符“INSERT EXEC” T-SQL代码:Sql server 在多标量表值函数中调用存储过程?,sql-server,function,stored-procedures,Sql Server,Function,Stored Procedures,有没有办法像这样调用多标量表值函数中的存储过程 注意:此查询返回错误: 在函数中无效使用副作用运算符“INSERT EXEC” T-SQL代码: CREATE FUNCTION fnCrSum ( @ay nvarchar(100), @yil nvarchar(4), @tip nvarchar(25) ) RETURNS @tablo TABLE ( id int, ref_num int, last_name nvarchar(200), grup nv
CREATE FUNCTION fnCrSum
(
@ay nvarchar(100), @yil nvarchar(4), @tip nvarchar(25)
)
RETURNS
@tablo TABLE
(
id int,
ref_num int,
last_name nvarchar(200),
grup nvarchar(200),
analist nvarchar(200),
durum nvarchar(10),
start_dt int ,
end_dt int,
duration int,
type nvarchar(10),
bildirim nvarchar(200)
)
AS
BEGIN
DECLARE @exec NVARCHAR(250)
SET @exec = 'exec dbo.spCrSum ''' + @ay + ''', ''' + @yil + ''', ''' + @tip + ''''
INSERT INTO @tablo
exec (@exec)
RETURN
END
GO
不能在函数中执行存储过程。函数不能有副作用,即更改数据 即使您的存储过程没有更改任何内容,SQL编译器也不能假定这一点,因此它不允许这样做
为什么需要将其包装到函数中?我解决了这个问题。我编写了一个表值函数,包括可执行查询,返回表,并准备了一个存储过程来调用传递参数的函数。它适合我。因为在Business Objects Designer方面存在技术问题。