SQL Server 2008 R2:选择存储过程的输出



我需要使用存储过程作为函数进行选择-它必须是存储过程,因为它会修改数据,而函数不能这样做。

所以正常情况下,我的功能是这样执行的

DECLARE @RC int
DECLARE @NextVal int
EXECUTE @RC = dbo.NextPickListNo
@NextVal OUTPUT

但我需要它用这样的东西:

select orderID, dbo.NextPickListNo  -- this does not work 
from blah where blah

换句话说,就像一个函数。

我是在另一个存储过程中完成这项工作的,所以如果需要的话,我可以使用游标——对于这么小的、本应在标准T-SQL中可用的东西来说,这似乎是一件很麻烦的事情。

如果你真的需要有副作用的函数,CLR就是你的选择。

CREATE ASSEMBLY [MyCLRLibrary]
FROM '\PathToMyCompiledCLR'
WITH PERMISSION_SET = SAFE
GO
CREATE FUNCTION [dbo].[NextPickListNo]
RETURNS int WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [MyCLRLibrary].[MyClass].[NextPickListNo]
GO

最新更新