如何从用户定义的函数调用存储过程在SQL 2000中
答案 0 :(得分:1)
正式你不能。
但你可以尝试这个技巧:
-- add 'loopback' linkedserver
if exists (select * from master..sysservers where srvname = 'loopback')
exec sp_dropserver 'loopback'
go
exec sp_addlinkedserver @server = N'loopback',
@srvproduct = N'',
@provider = N'SQLOLEDB',
@datasrc = @@servername
go
select * from openquery(loopback, 'exec yourSproc')
go
答案 1 :(得分:0)
根据this article,其中一个限制是您无法从UDF调用SP。
UDF的一个特性是它们是确定性的 - 用相同的输入值重复调用它们将产生相同的输出值(也假设基础数据没有变化)。如果从UDF调用其他对象,则SQL Server无法保证这将保持为真 - UDF将保持确定性。例如,如果从UDF调用SP,即使SP当前是确定性的(不包含任何非确定性函数,如GETDATE),也不能保证不会更改。