将函数作为参数传递给存储过程

时间:2011-12-06 14:33:20

标签: sql sql-server sql-server-2008 tsql

有没有办法将函数作为参数发送到存储过程?

create procedure stp_dummy 
@input nvarchar(255)
as select @input

exec stp_dummy a_function_that_returns_string('abracadabra')

(当然我知道以前可以调用该函数,但我想知道直接解决方案是否可用。)

2 个答案:

答案 0 :(得分:4)

我知道这不是您正在寻找的答案,但唯一的方法是声明一个局部变量,为此分配函数值,并将其用作参数值:

DECLARE @input nvarchar(255)
SET @input = a_function_that_returns_string('abracadabra')
EXEC stp_dummy @input=@input

使用SQL Server 2008,可以分为两行:

DECLARE @input nvarchar(255) = a_function_that_returns_string('abracadabra')
EXEC stp_dummy @input=@input

答案 1 :(得分:0)

不,这是SQL Server的限制。你必须做一些像Curt所展示的那样的事情。