提问人:freefaller 提问时间:6/16/2021 更新时间:6/16/2021 访问量:504
将函数返回值传递给存储过程参数
Passing function return value to stored procedure parameter
问:
有没有办法将函数的返回值直接传递到存储过程参数中,而无需先存储在变量中?
例如,给定以下存储过程(该存储过程将databaseA
)
CREATE PROCEDURE [dbo].[MySproc]
@NAME NVARCHAR(50)
AS
我希望能够调用以下内容(来自)...databaseB
EXEC [databaseA]..MySproc DB_NAME()
这会导致以下错误:
“)”附近的语法不正确。
以下有效,但需要两行...
DECLARE @NAME NVARCHAR(50) = DB_NAME()
EXEC [databaseA]..MySproc @NAME
我意识到从表面上看这不是一个大问题,但如果我能把它作为一条线,那真的会帮助我的情况。我的假设是这根本不可能
答:
2赞
Thom A
6/16/2021
#1
不。在 EXECUTE (Transact-SQL) 中,存储过程的语法如下:
Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH <execute_option> [ ,...n ] ]
}
[;]
请注意,对于参数,传递的值必须是(文本)值、变量或关键字。它不能是一个表达式,它包括类似简单表达式和标量函数的东西,如 .DEFAULT
@Variable + 'string'
GETDATE()
因此,必须首先将值存储在变量中,然后将该变量传递给过程。
评论
0赞
freefaller
6/16/2021
感谢您的确认 - 很不幸,但意料之中。我现在提出了一个后续问题
0赞
Thom A
6/16/2021
是的,我看到了,很确定答案也是“不”,@freefaller。
0赞
freefaller
6/16/2021
是的,我也有这种感觉......那好吧
评论