我们可以从SQL中的函数调用存储过程吗?是什么原因?
答案 0 :(得分:2)
函数只能读取数据,不能更新或更改任何内容。因此,不允许函数调用存储过程。
答案 1 :(得分:2)
是。
你可以通过一些涉及openrowset
的黑客来做到这一点,但不建议这样做,因为它会打开一个新的连接。
CREATE FUNCTION dbo.test ()
RETURNS varchar(200)
AS
BEGIN
RETURN (Select top 1 [Name] from
OPENROWSET('SQLNCLI','Server=.\SQL2008;Trusted_Connection=yes;','SET NOCOUNT ON;SET FMTONLY OFF;EXEC MASTER..SP_HELP')
)
END
GO
SELECT dbo.test()
答案 2 :(得分:1)
快速回答:否。
原因:存储过程不会产生任何可以在SQL中重用的输出。
答案 3 :(得分:0)
为了提高效率,函数应该是确定性的,即输出应该仅取决于输入,以便可以缓存结果。
如果要从函数调用存储过程,则必须专门使函数不确定。