转换失败“****”为int数据类型
问题描述:
我使用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
答
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
应作为答案。
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
永远不要使用@@ identity - 使用scope_identity()或者output子句。如果您在此表上插入带有标识的另一个表的触发器,则@@ identity将返回错误的值,这会使数据完整性无法修复。 – HLGEM 2012-03-27 20:10:06