我想创建这样的功能:SQL服务器 - 功能的程序
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION fnCalcTrimmean
(
@starttime datetime,
@endtime datetime,
@percentile decimal(18, 2),
@platform varchar(100),
@stage varchar(50)
)
RETURNS @result TABLE
(
TimeResult DECIMAL(18, 2)
)
AS
BEGIN
INSERT INTO @result
EXEC spCalcTrimmean @starttime, @endtime, @percentile, @platform, @stage
RETURN
END
但是当我尝试创建出现错误的函数:
Msg 443, Level 16, State 14, Procedure fnCalcTrimmean, Line 17
Invalid use of a side-effecting operator 'INSERT EXEC' within a function.
[更新]
- 程序spCalcTrimmean总是返回一个值
我能做些什么来创建一个这样的功能?
谢谢:)
删除函数,只需调用proc,将其结果存储在临时表中?看起来合乎逻辑... [这是一个例子](https://stackoverflow.com/q/653714/6167855) – scsimon
@scsimon是的,我知道我可以做到这一点,但我需要结果到一个选择语句和程序可以不在选择内部,但函数可以 –
你是什么意思“你需要结果到选择语句”。将结果存储在临时表中意味着您可以选择,连接等。听起来像[XY问题](http://xyproblem.info/) – scsimon