2009-06-06 16 views
13

Ich habe eine gespeicherte Prozedur ich wollte eine GUID (Benutzer-ID) in eine Tabelle in MS SQL einfügen, aber ich bekomme immer eine Fehlermeldung über den Bindestrich '-', die Teil des Guid-Wert ist, Hier ist mein Proc unten definiert;Einfügen GUID in SQL Server

Aber wenn ich einfache Anführungszeichen um den Wert legte, wenn das gespeicherte Proc in Management Studio ausgeführt wird, läuft es gut. Wie kann ich die Guid-Einfügung ohne Probleme von meinem gespeicherten proc handhaben?

Danke Jungs.

aktualisieren Hier ist die SQL exec

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 

Hier ist die Fehlermeldung

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

Haben Sie versehentlich die Argumente userid und bookid transponiert? Können Sie eine EXEC-Beispielanweisung posten, die den Fehler verursacht? Ihre SQL sieht soweit gut aus. –

Antwort

28

Nur aus einem Varchar werfen.

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

Ausgezeichnet! Dieser hat wunderbar funktioniert. – simplyme

9

Sie einfach QUOTE benötigen Ihre 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

Beat mich um 4 Sekunden. Mine entfernen. –

+0

Ja, ich habe das bemerkt, also wie kann ich das von meinem gespeicherten Proc aus tun, weil, wenn ich das versuchte, ein Fehler, der ein Varchar sagt, nicht in eine Uniqueidentifier umgewandelt werden kann, was ich bekam. Danke – simplyme

+0

@simply: klingt wie das * ist das eigentliche Problem; Können Sie diese Codezeile hinzufügen, die diese varchar/uid-Fehlermeldung erzeugt? –

1

Sie benötigen einfache Anführungszeichen um Ihre GUID .... es ist nur eine Zeichenfolge zu SQL-Server.

Sie könnten versuchen, lassen Sie die SP die GUID mit der SQL-Funktion generieren newid() ... SQL-Server nur ich denke.

Und wenn Sie die GUID aus einer anderen Tabelle ziehen, lassen Sie die SP diese GUID aus dieser Tabelle holen.

0

Versuchen Sie dies mit:

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

Das wird einen einfachen String rep zu nehmen. und verwandle es in ein GUID-Objekt.