Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 将varchar值“**”转换为数据类型int时,转换失败_Sql Server_Int_Varchar - Fatal编程技术网

Sql server 将varchar值“**”转换为数据类型int时,转换失败

Sql server 将varchar值“**”转换为数据类型int时,转换失败,sql-server,int,varchar,Sql Server,Int,Varchar,我正在使用SQLServer2005中的存储过程 我得到这个错误: 将varchar值“My_41.png”转换为数据类型int时,转换失败 imageID在tbl_itemImage中声明为varchar300 @ReturnValue声明为varcharMAX Insert和Update查询执行良好,数据也存储在表中。 但在执行SELECT查询的最后,它给出了上面的错误 这是我的存储过程 insert into tbl_itemImage(itemID,imageID,name,isCov

我正在使用SQLServer2005中的存储过程

我得到这个错误:

将varchar值“My_41.png”转换为数据类型int时,转换失败

imageID在tbl_itemImage中声明为varchar300 @ReturnValue声明为varcharMAX

Insert和Update查询执行良好,数据也存储在表中。 但在执行SELECT查询的最后,它给出了上面的错误

这是我的存储过程

insert into 
tbl_itemImage(itemID,imageID,name,isCoverImage,createdBy,createdOn)
values      
(@itemID,@imageID,@name,@isCoverImage,@ID,getdate())  



update tbl_itemImage
set imageID =  @imageID + CAST(@@Identity as varchar(10))+ @imageExtension
where   itemimageID = @@Identity  AND imageID <> '' 


DECLARE @ReturnValue  varchar(MAX)

select @ReturnValue = imageID from tbl_itemImage where itemImageID  = @@Identity 

Return  @ReturnValue

返回语句msdn.microsoft.com/en-us/library/ms174998.aspx返回的值应为INT而不是VARCHARMAX。请改用输出参数msdn.microsoft.com/en-us/library/ms187926.aspx。无论如何,应该使用RETURN IntValue返回错误代码

博格丹·萨林


应该是一个答案

RETURN语句返回的值应为INT而不是VARCHARMAX。相反,请使用输出参数。无论如何,应该使用RETURN IntValue返回错误代码。不要使用@identity-ever-改用scope\u identity或output子句。如果此表上的触发器插入到另一个具有标识的表中,@@identity将返回错误的值,这将破坏数据的完整性,无法修复。