2009-06-06 29 views
13

Tengo un proceso almacenado donde quiero insertar un GUID (id. De usuario) en una tabla en MS SQL, pero sigo recibiendo un error sobre el guión '-' que es parte del valor guid, aquí está mi proceso definido a continuación;Insertar GUID en SQL Server

@userID uniqueidentifier, 
@bookID int, 
@dateReserved datetime, 
@status bit 

INSERT INTO Reservation(BookId, DateReserved, [Status], UserId) 
VALUES (@bookID, @dateReserved, @status, @userID) 

Pero cuando pongo comillas simples alrededor del valor si el procedimiento almacenado se ejecuta en el estudio de la gerencia, funciona muy bien. ¿Cómo puedo manejar la inserción guid sin problemas de mi proceso almacenado?

Gracias chicos.

actualización Aquí está el 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 

Aquí está el mensaje de error

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

¿Transformó sus argumentos de usuario y bookid por error? ¿Puedes publicar un ejemplo de sentencia EXEC que está causando el error? Su SQL hasta ahora se ve bien. –

Respuesta

28

Simplemente ejecútelo de 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

¡Excelente! Este funcionó maravillosamente. – simplyme

9

Usted sólo tendrá que CITA su 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 arco

+0

me ganó por 4 segundos. Quitando el mío –

+0

Sí, me di cuenta de eso, entonces, ¿cómo puedo hacer eso desde mi proceso almacenado, porque cuando traté de hacerlo, un error que decía que no se podía convertir un varchar a un identificador único fue lo que obtuve. Gracias – simplyme

+0

@simply: suena así * es el problema real; ¿Puedes agregar esa línea de código que crea ese mensaje de error varchar/uid? –

1

Necesita comillas simples alrededor de su GUID .... es solo una cadena al servidor sql.

Puede intentar dejar que sp genere el GUID con la función sql newid() ... sql server solamente, creo.

Y si está sacando el GUID de otra tabla, deje que el SP obtenga ese GUID de esa tabla.

0

Trate de usar esto:

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

que se llevará a un simple representante de cadena. y convertirlo en un obj GUID.

Cuestiones relacionadas