Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tôi nên liên kết loại dữ liệu nào làm tham số truy vấn để sử dụng với cột NUMBER (15) trong Oracle ODBC?

Sở thích cá nhân của tôi là tạo chuỗi ký tự biến liên kết (VARCHAR2) và để Oracle thực hiện chuyển đổi từ ký tự sang định dạng lưu trữ nội bộ của riêng nó. Thật dễ dàng (trong C) để nhận các giá trị dữ liệu được biểu thị dưới dạng chuỗi kết thúc bằng null, ở định dạng có thể chấp nhận được.

Vì vậy, thay vì viết SQL như thế này:

SET MY_NUMBER_COL = :b1
  , MY_DATE_COL = :b2

Tôi viết SQL như thế này:

SET MY_NUMBER_COL = TO_NUMBER( :b1 )
  , MY_DATE_COL   = TO_DATE( :b2 , 'YYYY-MM-DD HH24:MI:SS')

và cung cấp các chuỗi ký tự làm biến liên kết.

Có một số ưu điểm của cách tiếp cận này.

Một là giải pháp khắc phục các sự cố và lỗi mà chúng ta gặp phải khi liên kết các kiểu dữ liệu khác.

Một ưu điểm khác là các giá trị ràng buộc dễ giải mã hơn trên dấu vết sự kiện Oracle 10046.

Ngoài ra, KẾ HOẠCH GIẢI THÍCH (tôi tin rằng) mong đợi tất cả các biến ràng buộc là VARCHAR2, do đó, điều đó có nghĩa là câu lệnh được giải thích hơi khác so với câu lệnh thực tế đang được thực thi (do chuyển đổi dữ liệu ngầm định khi các kiểu dữ liệu của các đối số ràng buộc trong thực tế câu lệnh không phải là VARCHAR2.)

Và (ít quan trọng hơn) khi tôi đang kiểm tra câu lệnh trong TOAD, sẽ dễ dàng hơn để có thể nhập chuỗi vào các hộp nhập và không phải thay đổi kiểu dữ liệu trong hộp danh sách thả xuống.

Tôi cũng để các hàm TO_NUMBER và TO_DATE buitin xác thực dữ liệu. (Ít nhất trong các phiên bản trước của Oracle, tôi đã gặp phải sự cố liên kết trực tiếp giá trị DATE và nó đã bỏ qua (ít nhất một số) kiểm tra tính hợp lệ và cho phép các giá trị ngày không hợp lệ được lưu trữ trong cơ sở dữ liệu.

Đây chỉ là sở thích cá nhân, dựa trên kinh nghiệm trong quá khứ. Tôi sử dụng cùng cách tiếp cận này với Perl DBD.

Tôi tự hỏi Tom Kyte (asktom.oracle.com) nói gì về chủ đề này?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cấu hình trình nghe Oracle để lắng nghe bên ngoài

  2. Làm ơn để đánh vần số (đơn vị tiền tệ) sang đơn vị tiền tệ của Ý mà không cần mã cứng số bản dịch

  3. Trang web ngừng hoạt động và nguồn cấp dữ liệu Twitter

  4. Chuyển đổi Unixtime sang Datetime SQL (Oracle)

  5. SQL lạ lãng phí tài nguyên của tôi