BindByName và bài học đáng nhớ khi làm việc với Database (Oracle)

Vừa qua, tôi có làm việc với 1 project với database là Oracle DB và ngộ ra 1 bài học đáng nhớ. Khi tôi cố gắng gọi 1 Stored Procedure với những câu lệnh hết sức quen thuộc:

Kết quả trả về là 1 table chỉ vẻn vẹn dt.Rows.Count = 0, mà rõ ràng là trong database có data. Kết quả là mình đã mất 1 thời gian kha khá mà k tìm được nguyên nhân tại sao, câu lệnh cũng không hề báo lỗi gì.

BindByName là gì? Có ăn được không?

Rồi đến một ngày, khi mình sử gọi 1 procedure khác ở 1 dự án khác, thì mình phát hiện ra thằng BindByName – mà mọi khi mình vẫn bỏ qua. Vậy BindByName là gì? BindByName là 1 thuộc tính của thằng OracleCommand, thuộc tính này chỉ định phương thức rằng buộc trong bộ tham số. Mặc định khi gọi Stored Procedure, các tham số bị ràng buộc bởi vị trí khai báo. Khi bạn gọi hàm BindByName = true, tức là các tham số sẽ bị ràng buộc bởi tên. Như vậy, thay vì phải truyển tham số theo đúng thứ tự khai báo của Procedure, thì thằng BindByName sẽ giúp chúng ta truyển tham số một cách chính xác cho từng biến của procedure.

Chỉ thiếu một dòng lệnh này mà mình đã tốn cả mớ thời gian, không hiểu vì sao code đúng mà chạy lại không ra kết quả gì. Quả là một bài học đáng nhớ !!!

Đề xuất cho bạn

Để lại bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

three × five =