【发布时间】:2011-12-15 02:07:02
【问题描述】:
SQL Server 2008 存储过程遇到问题:我不断收到以下错误。
从字符串转换为转换失败 唯一标识符。
这是存储过程 - 我已经切掉了很多用于测试
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
我尝试使用标准的 Management Studio“执行”菜单选项来调用它,它给了我这个:
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 - 总是同样的问题。有任何想法吗?快把我逼疯了!
【问题讨论】:
-
看到这个 SO ANSWER stackoverflow.com/questions/1390109/…
-
这不是骗子。链接的问题和答案是关于将不带破折号的字符串(例如
a89b1acd95016ae6b9c8aabb07da2010)转换为uniqueidentifier
标签: sql-server stored-procedures