将GUID插入SQL Server

时间:2009-06-06 14:40:36

标签: sql insert guid

我有一个存储过程,我想将一个GUID(用户ID)插入到MS SQL中的表中,但我一直收到关于连字符' - '的错误,这是guid值的一部分,这里是我在下面定义的proc ;

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

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

但是如果在Management Studio中执行存储过程,我会在值周围放置单引号,它运行正常。如何在没有存储过程的问题的情况下处理guid插入?

谢谢你们。

更新 这是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

这是错误消息

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

4 个答案:

答案 0 :(得分:29)

只需从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

答案 1 :(得分:9)

您只需要引用您的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

马克

答案 2 :(得分:1)

您的GUID周围需要单引号....它只是sql server的一个字符串。

您可以尝试让sp生成带有sql函数newid()的GUID ...我认为只有sql server。

如果您从另一个表中提取GUID,请让SP从该表中获取该GUID。

答案 3 :(得分:0)

尝试使用:

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

这将需要一个简单的字符串代表。并将其转换为GUID对象。