如何将@VAR +幻数传递给sql脚本中的存储过程参数?

时间:2012-10-13 17:59:49

标签: sql sql-server tsql sql-server-2005

假设我有一个存储过程调用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。

2 个答案:

答案 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