Sam*_*oth 3 sql t-sql sql-server sql-server-2008
我想做这样的事情:
declare @var varchar(50) = '2';
exec sp_myprocedure 'first', 'sec ' + @var
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
Incorrect syntax near '+'.
Run Code Online (Sandbox Code Playgroud)
当然我可以在exec程序之前设置变量:
set @var = 'sec ' + @var;
Run Code Online (Sandbox Code Playgroud)
但我不想要这个,因为我的代码中有很多执行,我不想创建百万个变量.
Isw*_*San 11
我认为如果你使用的话,在程序执行中不可能使用字符串连接EXEC.
从这个:
执行存储过程或函数
[{EXEC | 执行 } ]
Run Code Online (Sandbox Code Playgroud){ [ @return_status = ] { module_name [ ;number ] | @module_name_var } [ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] } ] [ ,...n ] [ WITH <execute_option> [ ,...n ] ] } [;]
本@parameter必须是一个值.但是这'sec ' + @var是一个表达方式.
您不需要声明一百万个变量,只需要声明一个变量,然后在每个变量之前设置它EXEC:
DECLARE @cmd nvarchar(max) = '';
declare @var varchar(50) = '2';
set @cmd = 'sec ' + @var;
exec sp_myprocedure 'first', @cmd
set @cmd = 'try ' + @var;
exec sp_myprocedure 'first', @cmd
set @cmd = 'foo ' + @var;
exec sp_myprocedure 'first', @cmd
set @cmd = 'bar ' + @var;
exec sp_myprocedure 'first', @cmd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6046 次 |
| 最近记录: |