2012-03-27 166 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

應作爲答案。

相關問題