如何从用户定义的函数调用存储过程在SQL 2000中

时间:2009-07-01 19:29:12

标签: sql-server

如何从用户定义的函数调用存储过程在SQL 2000中

2 个答案:

答案 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),也不能保证不会更改。

要解释(非)确定性的含义,请查看wikiMSDN