Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Tipe data apa yang harus saya ikat sebagai parameter kueri untuk digunakan dengan kolom NUMBER (15) di Oracle ODBC?

Preferensi pribadi saya adalah membuat string karakter variabel bind (VARCHAR2), dan biarkan Oracle melakukan konversi dari karakter ke format penyimpanan internalnya sendiri. Cukup mudah (dalam C) untuk mendapatkan nilai data yang direpresentasikan sebagai string yang diakhiri null, dalam format yang dapat diterima.

Jadi, alih-alih menulis SQL seperti ini:

SET MY_NUMBER_COL = :b1
  , MY_DATE_COL = :b2

Saya menulis SQL seperti ini:

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

dan berikan string karakter sebagai variabel pengikat.

Ada beberapa keuntungan dari pendekatan ini.

Salah satunya adalah yang mengatasi masalah dan bug yang dihadapi dengan mengikat tipe data lain.

Keuntungan lainnya adalah nilai bind lebih mudah diuraikan pada jejak Oracle event 10046.

Juga, RENCANA JELASKAN (saya percaya) mengharapkan semua variabel pengikatan menjadi VARCHAR2, jadi itu berarti pernyataan yang dijelaskan sedikit berbeda dari pernyataan aktual yang dieksekusi (karena konversi data implisit ketika tipe data dari argumen pengikatan di aktual pernyataan bukan VARCHAR2.)

Dan (kurang penting) ketika saya menguji pernyataan di TOAD, lebih mudah hanya untuk dapat mengetikkan string di kotak input, dan tidak perlu repot dengan mengubah tipe data di kotak daftar dropdown.

Saya juga membiarkan fungsi TO_NUMBER dan TO_DATE bawaan memvalidasi data. (Setidaknya di Oracle versi sebelumnya, saya mengalami masalah dengan mengikat nilai DATE secara langsung, dan melewati (setidaknya beberapa) pemeriksaan validitas, dan mengizinkan nilai tanggal yang tidak valid untuk disimpan dalam database.

Ini hanya preferensi pribadi, berdasarkan pengalaman masa lalu. Saya menggunakan pendekatan yang sama dengan Perl DBD.

Saya ingin tahu apa yang dikatakan Tom Kyte (asktom.oracle.com) tentang topik ini?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara mengekspor data dari tabel log ke badan email di oracle

  2. Parsing file SQL dengan PL/SQL dan DML/DDL menggunakan cx_Oracle dengan python

  3. Bagaimana cara menulis kerangka data panda ke database Oracle menggunakan to_sql?

  4. pembuat FORMULIR ORACLE

  5. Berapa panjang maksimum nama tabel di Oracle?