2012-03-27 117 views
0

我使用SQL Server存储过程2005年转换失败“****”为int数据类型

我收到此错误:

"Conversion failed when converting the varchar value 'My_41.png' to data type int."

图像标识声明as tbl_itemImage中的varchar(300) @ReturnValue被声明为varchar(MAX)

插入和更新查询执行得很好,数据也存储在表中。 但最后当执行SELECT Query时,它给了我一个上面的错误。

这是我的存储过程

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 
+2

RETURN语句(http://msdn.microsoft.com/zh-cn/library/ms174998.aspx)返回的值应该是INT not VARCHAR(MAX)。相反,请使用OUTPUT参数(http://msdn.microsoft.com/zh-cn/library/ms187926.aspx)。无论如何,'RETURN IntValue'应该用来返回一个错误代码。 – 2012-03-27 07:32:33

+0

永远不要使用@@ identity - 使用scope_identity()或者output子句。如果您在此表上插入带有标识的另一个表的触发器,则@@ identity将返回错误的值,这会使数据完整性无法修复。 – HLGEM 2012-03-27 20:10:06

回答

2

The value returned by RETURN statement(msdn.microsoft.com/en-us/library/ms174998.aspx) should be INT not VARCHAR(MAX). Instead, please use OUTPUT parameters (msdn.microsoft.com/en-us/library/ms187926.aspx). Anyway, RETURN IntValue should be used to return an error code

被博格丹Sahlean

应作为答案。

相关问题