Подтвердить что ты не робот

Ошибка конверсии при преобразовании из символьной строки в uniqueidentifier

Создал хранимую процедуру в 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)

Пропущенный в param @vPortalUID содержит: 2A66057D-F4E5-4E2B-B2F1-38C51A96D385. Я выполняю хранимую процедуру следующим образом:

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

Он падает. Я тоже попытался преобразовать. Еще нет радости. Также было значение, связанное с {} вокруг него. Я удалил их программно и вручную, как указано выше.

Если вам интересно, я запускаю SP на странице ASP Classic, хотя это не должно влиять на это, поскольку приведенный выше код запускался с использованием SSMS.

Заранее благодарим за помощь. Джеймс

4b9b3361

Ответ 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), ваш входной параметр слишком мал!