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'
倒れます。 Convertも試してみました。まだ喜びはありません。また、{}を使用して値を入力しました。上記のようにこれらをプログラムと手動で削除しました。
興味がある場合は、SPからASP Classicページを実行していますが、上記のコードはSSMSを使用して実行されたため、これには影響しません。
よろしくお願いします。ジェームス
これは失敗します:
_ 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)
で、入力パラメーターが小さすぎます!