web-dev-qa-db-ja.com

GUIDをSQLServerに挿入する

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 '-'.
15
simplyme

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
29
Sören Kuklau

必要なのは[〜#〜] 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

マーク

10
marc_s

GUIDを一重引用符で囲む必要があります。これはSQLサーバーへの単なる文字列です。

SpにGUIDをSQL関数newid()... sqlサーバーで生成させることを試みることができます。

また、別のテーブルからGUIDを取得する場合は、SPそのテーブルからGUIDを取得します。

1
Jody

これを使用してみてください:

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

それには単純な文字列の担当者が必要です。そしてそれをGUID objに変換します。

0
James Stewart