2009-06-06 8 views
13

J'ai un proc stocké où je veux insérer un GUID (identifiant de l'utilisateur) dans une table dans MS SQL mais je reçois toujours une erreur sur le trait d'union '-' qui fait partie de la valeur guid, voici ma proc définie ci-dessous; Mais lorsque je place des guillemets simples autour de la valeur si la proc stockée est exécutée dans Management Studio, elle fonctionne correctement. Comment puis-je gérer l'insertion de guid sans problèmes de mon proc stocké?Insertion de GUID dans SQL Server

Merci les gars.

Mise à jour Voici le exec sql

DECLARE @return_value int 

EXEC @return_value = [dbo].[usp_ReserveBook] 
    @userID = AE019609-99E0-4EF5-85BB-AD90DC302E70, 
    @bookID = 7, 
    @dateReserved = N'09/03/2009', 
    @status = 1 

SELECT 'Return Value' = @return_value 

Voici le message d'erreur

Msg 102, Level 15, State 1, Line 5 
Incorrect syntax near '-'. 
+0

Avez-vous transposé vos arguments userid et bookid par erreur? Pouvez-vous poster un exemple d'instruction EXEC qui provoque le bug. Votre SQL jusqu'à présent semble bien. –

Répondre

28

Il suffit de le lancer à partir d'un varchar.

DECLARE @return_value int 

EXEC @return_value = [dbo].[usp_ReserveBook] 
     @userID = CONVERT(uniqueidentifier, 'AE019609-99E0-4EF5-85BB-AD90DC302E70'), 
     @bookID = 7, 
     @dateReserved = N'09/03/2009', 
     @status = 1 

SELECT 'Return Value' = @return_value 
+0

Excellent! Celui-ci a fonctionné magnifiquement. – simplyme

9

Il vous suffit de QUOTE votre GUID:

DECLARE @return_value int 

EXEC @return_value = [dbo].[usp_ReserveBook] 
     @userID = 'AE019609-99E0-4EF5-85BB-AD90DC302E70', 
     @bookID = 7, 
     @dateReserved = N'09/03/2009', 
     @status = 1 

SELECT 'Return Value' = @return_value 

M arc

+0

me battre de 4 secondes. Enlever le mien. –

+0

Oui je l'ai remarqué, alors comment puis-je faire cela à partir de mon proc stocké, parce que quand j'ai essayé de le faire, une erreur indiquant un varchar ne peut pas être converti en un identificateur unique était ce que j'ai obtenu. Merci – simplyme

+0

@simply: ça sonne comme ça * est le vrai problème; pouvez-vous ajouter cette ligne de code qui crée ce message d'erreur varchar/uid? –

1

Vous avez besoin de guillemets simples autour de votre GUID .... c'est juste une chaîne pour le serveur sql.

Vous pourriez essayer de laisser le sp générer le GUID avec la fonction sql newid() ... sql server seulement je pense.

Et si vous tirez le GUID d'une autre table, laissez le SP obtenir ce GUID à partir de cette table.

0

Essayez d'utiliser ceci:

sql_cmd.Parameters.AddWithValue 
("@Company_ID",**Guid.Parse**("00000000-0000-0000-0000-000000000000"); 

Cela prendra un représentant de chaîne simple. et le transformer en obj GUID.

Questions connexes