2009-06-06 46 views
13

Tôi có một proc được lưu trữ là tôi muốn chèn một GUID (id người dùng) vào một bảng trong MS SQL nhưng tôi vẫn nhận được một lỗi về dấu gạch nối '-' là một phần của giá trị guid, đây là proc của tôi được xác định dưới đây;Chèn GUID vào SQL Server

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

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

Nhưng khi tôi đặt dấu nháy đơn xung quanh giá trị nếu proc được lưu trữ được thực hiện trong Management Studio, nó sẽ hoạt động tốt. Làm thế nào tôi có thể xử lý chèn guid mà không có vấn đề từ proc lưu trữ của tôi?

Xin cảm ơn các bạn.

Cập nhật Đây là 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 

Dưới đây là thông báo lỗi

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

Bạn có nhầm lẫn đối số userid và bookid của mình không? Bạn có thể gửi một câu lệnh EXEC ví dụ gây ra lỗi không. SQL của bạn cho đến nay có vẻ tốt. –

Trả lời

28

Chỉ cần truyền từ một 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 
+0

Tuyệt vời! Điều này làm việc rất đẹp. – simplyme

9

Bạn chỉ cần QUOTE GUID của bạn:

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 

M arc

+0

đánh bại tôi sau 4 giây. Loại bỏ mỏ. –

+0

Yea Tôi nhận thấy rằng, làm thế nào tôi có thể làm điều đó từ proc lưu trữ của tôi, bởi vì khi tôi đã cố gắng làm điều đó, một lỗi nói rằng một varchar không thể được chuyển đổi thành một uniqueidentifier là những gì tôi nhận được. Cảm ơn – simplyme

+0

@simply: âm thanh như thế * là vấn đề thực sự; bạn có thể thêm dòng mã đó tạo ra thông báo lỗi varchar/uid đó không? –

1

Bạn cần báo giá đơn xung quanh GUID của bạn .... nó chỉ là một chuỗi để máy chủ sql.

Bạn có thể thử cho phép sp tạo GUID với hàm sql newid() ... máy chủ sql mà tôi nghĩ.

Và nếu bạn đang kéo GUID từ một bảng khác, hãy để SP đi lấy GUID đó từ bảng đó.

0

Hãy thử sử dụng này:

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

đó sẽ đưa một chuỗi đại diện đơn giản. và biến nó thành một obj GUID.

Các vấn đề liên quan