Sql @ROWCOUNT的正确类型是什么?

Sql @ROWCOUNT的正确类型是什么?,sql,sql-server,sql-server-2008,rowcount,Sql,Sql Server,Sql Server 2008,Rowcount,我正在用SQLServer2008编写一个存储过程,需要计算受查询影响的行数 DECLARE @my_rows AS INT 然后 SELECT * FROM a table WHERE some conditions SET @my_rows=@@ROWCOUNT 如果我将_行声明为varchar,它将正常工作,但如果我将其声明为INT,则会出现以下错误: 将表达式转换为数据类型tinyint时出现算术溢出错误 要声明的正确类型是什么?我认为行

我正在用SQLServer2008编写一个存储过程,需要计算受查询影响的行数

DECLARE
    @my_rows                    AS INT
然后

SELECT *
FROM a table
WHERE some conditions
SET @my_rows=@@ROWCOUNT
如果我将_行声明为varchar,它将正常工作,但如果我将其声明为INT,则会出现以下错误:

将表达式转换为数据类型tinyint时出现算术溢出错误


要声明的正确类型是什么?我认为行数只能是整数,并且介于0和总行数之间。

根据MSDN,正确的返回类型是int


SQL代码很好,即使
@my_rows
声明为
tinyint

也能正常工作。这是一个很好的评论,但回答很差。请尝试将其加厚一点,或者尝试解释为什么OP在尝试将int值设置为int数据类型时出错(如他所声称的)。如果@my_rows声明为tinyint,只要@ROWCOUNT返回的值不大于tinyint的最大值(255),它将正常工作。否则会出现算术溢出错误。@ZoharPeled是的,我刚才指出int和tinyint都可以正常工作。我测试了你的代码,没有任何问题。你确定你已经将
@my_rows
声明为
int
,而不是
tinyint
声明为异常状态吗?好吧,正如哈沙利在他的回答中所说,的数据类型实际上是
int
。当我尝试您的代码(使用实际的select语句)时,没有出现错误。您的错误文本表明您将
@my_rows
声明为
tinyint
,而不是
int
,这可能就是问题所在。您不会从问题中的代码中得到该错误。请验证这是否与您正在执行的产生该错误的代码匹配。是的,INT是正确的。错误来自我的错误,因为在原始代码中有两个倒列,所以系统尝试将varchar值保存到tinyint列中。抱歉。投票以打字错误结束/根据@Nicolases last comment无法再复制。