将函数 return 值传递给存储过程参数
Passing function return value to stored procedure parameter
有没有办法直接将函数的 return 值传递给存储过程参数,而无需先存储在变量中?
例如,给定以下存储过程(将在 databaseA
上)
CREATE PROCEDURE [dbo].[MySproc]
@NAME NVARCHAR(50)
AS
我希望能够调用以下内容(来自 databaseB
)...
EXEC [databaseA]..MySproc DB_NAME()
这会导致以下错误:
Incorrect syntax near ')'.
以下有效,但需要两行...
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()
.
因此,您必须先将值存储在变量中,然后将该变量传递给过程。
有没有办法直接将函数的 return 值传递给存储过程参数,而无需先存储在变量中?
例如,给定以下存储过程(将在 databaseA
上)
CREATE PROCEDURE [dbo].[MySproc]
@NAME NVARCHAR(50)
AS
我希望能够调用以下内容(来自 databaseB
)...
EXEC [databaseA]..MySproc DB_NAME()
这会导致以下错误:
Incorrect syntax near ')'.
以下有效,但需要两行...
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()
.
因此,您必须先将值存储在变量中,然后将该变量传递给过程。