Khi ngoại lệ chỉ ra, bạn phải thiết lập một cách rõ ràng SqlParameter.Precision
và SqlParameter.Scale
tính để sử dụng các loại decimal
như một tham số.
Giả sử trường SQL của bạn thuộc loại decimal(18,8)
. Cách làm nội tuyến này là sử dụng cú đúp-khởi cho SqlParameter của bạn trong khi thêm nó vào SqlParameterCollection
, như sau:
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8 });
Bạn cũng có thể làm
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8}).Value = 0.4m; // or whatever
để thêm giá trị, nếu bạn cần một. Bạn thậm chí có thể làm
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8, Value = 0.4m /* or whatever */});
nếu bạn muốn. Brace initialization thực sự mạnh mẽ.
Lưu ý phụ: Tôi nhận thấy đây là một câu hỏi cũ, nhưng tôi nghĩ biểu mẫu này dễ đọc hơn là tạo đối tượng trong khi thêm nó vào danh sách và sau đó đặt tỷ lệ và độ chính xác. Đối với Posterity! (vì đây là kết quả tìm kiếm google liệt kê cao)
Bạn có câu hỏi không? Bạn thấy gì về lỗi này? – Oded
Xin chào Oded, Có Có ngoại lệ trên để đặt độ chính xác và tỷ lệ. –
Và? Điều gì không rõ ràng về lỗi? Bạn cần đặt độ chính xác và tỷ lệ. – Oded