有没有办法在多标量表值函数中调用存储过程?
注意:此查询返回错误:
在函数中无效使用副作用运算符'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 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
答案 0 :(得分:2)
功能不能产生副作用,即更改数据。
即使你的存储过程没有改变任何东西,SQL编译器也不能假设它,所以它只是不允许它。
为什么需要将它包装在函数中?
答案 1 :(得分:0)
您无法在函数中执行存储过程。
答案 2 :(得分:0)
我解决了这个问题。我写了一个表值函数,包括可执行查询,返回表和准备一个存储过程来调用该函数传递参数。它对我有用。