Utworzono procedurę składowaną w SQL 9 (2005) i zaktualizowano ją do wersji SQL 10 (2008). Od tego czasu jest następująca procedura przechowywana przestał działać i rzucony w górę powyższy błąd:Konwersja nie powiodła się podczas konwersji z ciągu znaków na uniqueidentifier.
ALTER PROCEDURE [dbo].[GetModifiedPages]
@vPortalUID nvarchar(32) = ''
AS
BEGIN
-- Convert GUID to UI
DECLARE @nPortalUID AS uniqueidentifier
SET @nPortalUID = CAST(@vPortalUID AS uniqueidentifier)
Przekazany w param @vPortalUID zawiera: 2A66057D-F4E5-4E2B-B2F1-38C51A96D385. Wykonuję zapisany proces w ten sposób:
EXEC GetModifiedPages '2A66057D-F4E5-4E2B-B2F1-38C51A96D385'
To przewraca się. Próbowałem również Convert. Wciąż nie ma radości. Mieli również wartość z {} wokół niej. Usunąłem te programowo i ręcznie, jak powyżej.
Jeśli jesteś zainteresowany, uruchomię SP ze strony ASP Classic, chociaż nie powinno to wpłynąć na to, ponieważ powyższy kod został uruchomiony przy użyciu SSMS.
Z góry dziękuję za pomoc. James
+1 dla punktu, w którym jego parametr jest zbyt mały, ale należy zauważyć, że z tego powodu jego ciąg jest faktycznie obcięty. Jeśli zrobiłeś 'print vPortalUID' przed konwersją, zobaczysz, że' D385' nie dokonało cięcia. – Eric
Dziękuję! Świetna robota! Teraz, aby zmienić 20 SP! ;) – jamesmhaley
Nie wiem, dlaczego to robiłem http://stackoverflow.com/questions/1390109/convert-varchar-to-uniqueidentifier-in-sql-server: p. Powinienem najpierw rzucić varchar + Oczywiście 1! – Zerotoinfinity