3

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

4

2 回答 2

2

我看到的唯一选择是声明一个临时变量:

declare @var1_increment = @var1 + 1
exec stored_proc @var1_increment

并创建一个建议扩展 T-SQL 语法的 Connect 和 User Voice 主题。

于 2012-10-13T18:24:38.737 回答
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
于 2012-10-13T18:49:56.497 回答