She*_*ard 5 sql t-sql sql-server stored-procedures
为什么以下代码
DECLARE @LogDetail AS NVARCHAR(1000)
SELECT @LogDetail = CAST(@@ROWCOUNT AS NVARCHAR(30)) + ' rows processed'
EXECUTE MyProcedure @ExecutionId, @LogDetail
Run Code Online (Sandbox Code Playgroud)
工作,但这不?
EXECUTE MyProcedure @ExecutionId, CAST(@@ROWCOUNT AS NVARCHAR(30)) + ' rows processed'
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为动态生成的值使用INSERT语句,但在调用过程时则不行.
我怎么能用单行代码呢?
谢谢
Dam*_*ver 10
因为使用时必须使用变量或值EXEC.表达式不是一种选择.
-- SQL Server Syntax
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 ] ]
}
[;]
Run Code Online (Sandbox Code Playgroud)
而且,既然你提到INSERT我们可以看一下它并看到它明确提到了表达式:
[ WITH <common_table_expression> [ ,...n ] ]
INSERT
{
[ TOP ( expression ) [ PERCENT ] ]
[ INTO ]
{ <object> | rowset_function_limited
[ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
}
{
[ ( column_list ) ]
[ <OUTPUT Clause> ]
{ VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ]
| derived_table
| execute_statement
| <dml_table_source>
| DEFAULT VALUES
}
}
}
[;]
Run Code Online (Sandbox Code Playgroud)
我怎么能用单行代码呢?
听起来很奇怪,你做不到.如果要构造要传递给存储过程的信息,则必须将其作为单独的SET/ SELECT将其转换为变量.