La inserción de GUID en SQL Server

Tengo un procedimiento almacenado en que se desea insertar un GUID (identificador de usuario) en una tabla en MS SQL pero me sale un error sobre el guión ‘-‘ que es parte del valor guid, aquí está mi proc se define a continuación;

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

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

Pero cuando me pongo con comillas simples alrededor del valor si el procedimiento almacenado se ejecuta en el Management Studio, funciona muy bien. ¿Cómo puedo manejar el guid de inserción sin problemas desde mi procedimiento 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 '-'.
¿Transponer su nombre de usuario y bookid argumentos por error? Puedes publicar un ejemplo de instrucción EXEC que está causando el error. SQL hasta ahora se ve bien.

OriginalEl autor simplyme | 2009-06-06

4 Kommentare

  1. 28

    Sólo echó 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
    Excelente! Este funcionaba a la perfección.

    OriginalEl autor Sören Kuklau

  2. 9

    Usted simplemente necesita 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

    Marc

    me ganó por 4 segundos. Extracción de la mina.
    Sí me di cuenta de que, así que ¿cómo puedo hacer que desde mi procedimiento almacenado, porque cuando traté de hacer eso, un error que dice un varchar no puede ser convertido a un tipo uniqueidentifier fue lo que obtuve. Gracias
    suena como que* es el verdadero problema; se puede agregar que la línea de código que crea que varchar/uid mensaje de error?
    El uso de una cadena que sólo funciona en algunos casos. La conversión de la cadena de uniquidentifier funciona en todos los casos.

    OriginalEl autor marc_s

  3. 1

    Necesita comillas simples alrededor de su GUID….es sólo una cadena de sql server.

    Usted podría tratar de dejar que el sp generar el GUID con el sql de la función newid() …de sql server sólo creo.

    Y si usted está tirando el GUID de otra tabla, vamos a la SP ir a ese GUID de la tabla.

    OriginalEl autor Jody

  4. 0

    Trate de usar este:

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

    Que tomar una simple cadena rep. y convertirlo en un GUID obj.

    OriginalEl autor James Stewart

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea