假设我有一个存储过程调用MyStoredProc
,它收到了一个int (@MyParam INT)
数据类型。
假设我在这样的脚本中声明了一个int ......
DECLARE @MyVar INT ;
SET @MyVar = 101 ;
我刚写了一个很长的sql脚本,我做了很多这个......
EXEC MyStoredProc @MyVar + 1 ;
我很震惊这导致语法错误警告。
我可以这样做......
EXEC MyStoredProc @MyVar ;
我可以这样做......
EXEC MyStoredProc 101 ;
但我不能这样做......
EXEC MyStoredProc @MyVar + 1 ;
这将使我的脚本难以写,除非我遗漏了一些东西。这适用于SQL 2005。
答案 0 :(得分:2)
我看到的唯一选择是声明一个临时变量:
declare @var1_increment = @var1 + 1
exec stored_proc @var1_increment
创建一个Connect和User Voice主题,建议扩展T-SQL语法。
答案 1 :(得分:2)
如果添加@MyVar + @MyVar2,可能会溢出一个整数,这可能是一个原因。
顺便说一下,以下方法不适用于sql server 2008
EXEC MyStoredProc @MyVar + @MyVar2;
我认为你可以在调用存储过程之前进行添加(根据@adatishchev)或者将两个参数传递给存储过程并将它们添加到存储过程中。
EXEC MyStoredProc @MyVar, @MyVar2;
CREATE PROCEDURE [dbo].[MyStoredProc]
@MyVar INT,
@MyVar2 INT
AS
BEGIN
SELECT @MyVar += @MyVar2;
END