GUID(ユーザーID)をMS SQLのテーブルに挿入したいのですが、GUID値の一部であるハイフン '-'に関するエラーが発生し続けます。 、これが以下に定義されている私のプロシージャです。
@userID uniqueidentifier,
@bookID int,
@dateReserved datetime,
@status bit
INSERT INTO Reservation(BookId, DateReserved, [Status], UserId)
VALUES (@bookID, @dateReserved, @status, @userID)
ただし、ストアドプロシージャをManagement Studioで実行する場合、値を一重引用符で囲むと、正常に実行されます。ストアドプロシージャから問題なくGUID挿入を処理するにはどうすればよいですか?
みんなありがとう。
更新これがsqlexecです
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 '-'.
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
必要なのは[〜#〜] quote [〜#〜] 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
マーク
GUIDを一重引用符で囲む必要があります。これはSQLサーバーへの単なる文字列です。
SpにGUIDをSQL関数newid()... sqlサーバーで生成させることを試みることができます。
また、別のテーブルからGUIDを取得する場合は、SPそのテーブルからGUIDを取得します。
これを使用してみてください:
sql_cmd.Parameters.AddWithValue
("@Company_ID",**Guid.Parse**("00000000-0000-0000-0000-000000000000");
それには単純な文字列の担当者が必要です。そしてそれをGUID objに変換します。