我们可以从函数调用存储过程吗?
答
是的。
您可以通过一些涉及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()
答
快速回答:号
为什么:存储过程不会产生SQL内可重复使用的任何输出。
答
函数只能读取数据,它们不能更新或更改任何内容。因此,函数不允许调用存储过程。
有输出参数,并可以存储过程的结果插入表 – Andomar 2010-08-23 10:44:05