Échec de la Conversion lors de la conversion d'une chaîne de caractères de type uniqueidentifier. dans SQL
J'ai une procédure stockée la variable d'entrée est de type uniqueidentifier. Lorsque j'exécute cette procédure stockée, si je suis la bonne valeur dans la table de la procédure stockée renvoie le dossier, mais si je donne la valeur de mal alors que la procédure stockée ne doit pas renvoyer quoi que ce soit.
J'obtiens cette erreur:
Conversion a échoué lors de la conversion d'une chaîne de caractères de type uniqueidentifier.
C'est ma procédure stockée:
ALTER PROCEDURE [dbo].[Get_Authorization_Token]
@Auth_Token uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
SELECT
Customer_ID, Auth_Token, Token_Expiration
FROM
Authorization_Token
WHERE
Auth_Token = @Auth_Token
AND GETDATE() < Token_Expiration
END
Je ne suis pas sûr de savoir pourquoi le gel de mon post!!
J'ai essayé de la FONTE comme ceci:
CAST(Auth_Token as uniqueidentifier)
Mais j'ai la même erreur.
- Vous avez oublié d'indiquer quel type de données de la colonne
auth_token
est, qui est la clé de cette question.
Vous devez vous connecter pour publier un commentaire.
Je vais aller sur une branche ici, et dire que le auth_token colonne de votre tableau est un varchar (ou nvarchar), et que l'une des valeurs n'est PAS un guid valide. Par conséquent, lorsque vous faites votre recherche, c'est d'essayer (et à défaut) pour convertir les valeurs dans la colonne de guid.
Vous pourriez lancer la réception de vos guid comme une chaîne de caractères afin de correspondre au type de données de la colonne, sachant de cousre, qu'il ne sera jamais correspondre à ceux des chaînes non valides.
Voici une illustration de ce qui se passe
Pour résoudre le problème, vous pouvez soit refactoriser l'instruction select cast @authtoken comme une chaîne de caractères comme ceci:
Si vous avez SQL Server 2012, vous pourriez aussi utiliser try_convert sur la colonne
EDIT: Voici un peu de code que j'ai écrit pour tester si une chaîne est un GUID. Je probalby ne devriez pas l'utiliser dans un système de production, mais il peut vous aider à dénicher les chaînes non valides.