Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 强制输出参数不为tinyint?_Sql Server - Fatal编程技术网

Sql server 强制输出参数不为tinyint?

Sql server 强制输出参数不为tinyint?,sql-server,Sql Server,我刚刚继承了一个存储过程,作为插入新用户的系统的一部分。 在顶部,@user\u id声明为INT-OUTPUT,在底部,设置@user\u id=@@IDENTITY,由于某种原因,它总是返回零。如果我这样做: select @@IDENTITY …我在1872040左右找到了一些东西 如果我这样做: SET @user_id = 187300 …我得到: 将数据类型int转换为smallint时出错 如果我这样做,我也会得到同样的结果: SET @user_id = CAST(@@

我刚刚继承了一个存储过程,作为插入新用户的系统的一部分。
在顶部,
@user\u id
声明为
INT-OUTPUT
,在底部,
设置@user\u id=@@IDENTITY
,由于某种原因,它总是返回零。如果我这样做:

select @@IDENTITY 
…我在1872040左右找到了一些东西

如果我这样做:

SET @user_id = 187300  
…我得到:

将数据类型int转换为smallint时出错

如果我这样做,我也会得到同样的结果:

SET @user_id = CAST(@@IDENITY as INT)... 

它需要
设置@user\u id=CAST(@@IDENITY as TINYINT)
或只设置
@user\u id=@@IDENITY
,才能不给我错误。但是,它只返回null/0。所以,我在谷歌上四处搜索,却找不到答案,有没有更好的方法来强制输出参数不为tinyint?这是在ms sql中

我重现了一个可能导致此问题的场景。我认为这可能不是存储过程本身,而是您调用存储过程的方式——特别是,调用代码为@user_id指定的数据类型

e、 g

一旦表上的标识值超过SMALLINT的容量,就会出现转换错误

因此,请确保在调用代码中指定了正确的数据类型


另外,根据我的评论,您可能希望使用而不是@@IDENTITY。

您可能需要发布存储过程供我们查看-老实说,这听起来有点奇怪!另外,您可能希望使用SCOPE_IDENTITY()而不是@IDENTITYHmm谢谢!我检查了调用代码(php),它被设置为SQLINT4,对应于BIGINT。。正确的?
DECLARE @user_id SMALLINT -- THIS IS WRONG, SHOULD BE INT
EXECUTE YourSproc 'ValueA', @user_id OUTPUT