在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'
它倒下了。我试过转换aswell。仍然没有快乐。周围也有{}的价值。我按照上面的程序和手动删除了这些。
如果您感兴趣我正在从ASP Classic页面运行SP,尽管这不应该影响这一点,因为上面的代码是使用SSMS运行的。
提前感谢您的帮助。 詹姆斯
答案 0 :(得分:35)
这失败了:
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)
,输入参数太小!