我有一个存储过程,我想将一个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 '-'.
答案 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对象。