2011-10-25 104 views
1

遇到問題與SQL Server 2008存儲過程:我不斷收到以下錯誤。SQL Server 2008 - 「從字符串轉換爲uniqueidentifier時轉換失敗。」錯誤

將字符串轉換爲 uniqueidentifier時轉換失敗。

這裏的存儲過程 - 我已經斬了很多出來用於測試

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE RateReview 
@ProfileKey    INT 
,@ReviewKey     NVARCHAR(36) 
,@Rating     BIT 
,@Result     NVARCHAR(16) OUTPUT 
AS 
BEGIN 
SET NOCOUNT ON; 

SET @ReviewKey = 'NotFound' 

DECLARE @ReviewID   INT = 0 
DECLARE @VisitorProfileID INT = 0 
DECLARE @ReviewRatingID  INT = 0 
DECLARE @VotedUp   BIT = 0 

DECLARE @Temp UNIQUEIDENTIFIER 
SET @Temp = CONVERT(UNIQUEIDENTIFIER, @ReviewKey) 

-- Commented code here 

END 
GO 

我嘗試用標準的管理工作室「執行」菜單選項,這給了我這個調用此:

DECLARE @return_value int, 
    @Result nvarchar(16) 

EXEC @return_value = [dbo].[maxi_content_RateReview] 
    @ProfileKey = 1985118925, 
    @ReviewKey = N'4D051C99-1D59-4BB0-BFB9-D26786B5C809', 
    @Rating = 1, 
    @Result = @Result OUTPUT 

SELECT @Result as N'@Result' 

SELECT 'Return Value' = @return_value 

GO 

我已經檢查過GUID是否正確,並嘗試使用CAST和CONVERT - 總是出現同樣的問題。有任何想法嗎?這讓我瘋狂!

+0

看到這個所以答案​​http://stackoverflow.com/questions/1390109/convert-varchar-to-uniqueidentifier-in-sql-server/1390129#1390129 – sll

+1

這不是一個騙局。鏈接的問題和答案是關於將不帶破折號的字符串(如「a89b1acd95016ae6b9c8aabb07da2010」)轉換爲「uniqueidentifier」 –

回答

5

您的代碼具有此行

SET @ReviewKey = 'NotFound' 

然後嘗試和鑄造的字符串uniqueidentifier。如果你刪除該行,它的工作原理!

2

SET @ReviewKey = 'NotFound' 

然後嘗試

SET @Temp = CONVERT(UNIQUEIDENTIFIER, @ReviewKey) 

這不會工作作爲 'NOTFOUND' 不是一個GUID

0

除非我的眼球都在欺騙我,你的問題是在這line:

SET @ReviewKey = 'NotFound' 

字符串'NotFound'無法轉換爲GUID。它看起來像你的proc覆蓋任何值與'NotFound'傳入。

相關問題