从字符串转换为uniqueidentifier时转换失败(Conversion failed whe

2019-07-19 14:29发布

在SQL 9(2005)创建一个存储过程,并有自升级到SQL 10(2008)。 从那时起,以下存储过程已停止工作,并抛出了上述错误:

ALTER PROCEDURE [dbo].[GetModifiedPages] 
    @vPortalUID         nvarchar(32) = ''
AS
BEGIN
    -- Convert GUID to UI
    DECLARE @nPortalUID AS uniqueidentifier
    SET @nPortalUID = CAST(@vPortalUID AS uniqueidentifier)

将在参数@vPortalUID通过包含:2A66057D-F4E5-4E2B-B2F1-38C51A96D385。 我执行这样的存储过程:

EXEC GetModifiedPages '2A66057D-F4E5-4E2B-B2F1-38C51A96D385'

它倒下。 我曾尝试转换以及。 仍然没有喜悦。 也有过价值与要在{}周围。 编程方式和如上述手动移除这些。

如果你有兴趣我正在从ASP经典页的SP,虽然这应该不会影响这是上面的代码使用SSMS运行。

在此先感谢您的帮助。 詹姆士

Answer 1:

失败:

 DECLARE @vPortalUID NVARCHAR(32)
 SET @vPortalUID='2A66057D-F4E5-4E2B-B2F1-38C51A96D385'
 DECLARE @nPortalUID AS UNIQUEIDENTIFIER
 SET @nPortalUID = CAST(@vPortalUID AS uniqueidentifier)
 PRINT @nPortalUID

这个工程

 DECLARE @vPortalUID NVARCHAR(36)
 SET @vPortalUID='2A66057D-F4E5-4E2B-B2F1-38C51A96D385'
 DECLARE @nPortalUID AS UNIQUEIDENTIFIER
 SET @nPortalUID = CAST(@vPortalUID AS UNIQUEIDENTIFIER)
 PRINT @nPortalUID

所不同的是NVARCHAR(36)您的输入参数是太小了!



文章来源: Conversion failed when converting from a character string to uniqueidentifier