sql-server - 将函数返回值传递给存储过程参数
问题描述
有没有办法将函数的返回值直接传递给存储过程参数,而无需先存储在变量中?
例如,给定以下存储过程(将 on 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
我从表面上意识到这不是一个大问题,但如果我可以将它作为一条线,它真的会对我的情况有所帮助。我的假设是这根本不可能
解决方案
否。从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()
.
因此,您必须首先将值存储在变量中,然后将该变量传递给过程。
推荐阅读
- oracle - 我的答案是获取除输出中提供的行之外的多行
- oracle - 我想从 PLSQL 的表中删除带有条件的重复项
- javascript - Guard 不返回经过身份验证的用户
- typescript - Typescript:试图推断键值对类型的值 - Discord.js 动态事件
- amazon-web-services - 用户无权执行:iam:PassRole on role,但它有权限
- pandas - 卡住合并两个数据帧,得到意想不到的结果
- c# - 通用扩展方法类型推断
- r - 如何将数值添加到 R 中的包圆图?
- python - 如何检查数字是 3 的倍数还是包含数字 5?
- react-native - TypeError: undefined is not an object (评估'props.navigation.navigate')