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

Tipe data .NET mana yang terbaik untuk memetakan tipe data NUMBER Oracle di NHibernate?

Saya telah melihat desimal digunakan sebagai ganti int/long dalam berbagai contoh. Saya hanya mencoba memahami alasannya

Itu mungkin karena .NET decimal dan Oracle NUMBER memetakan sedikit lebih baik daripada long dan NUMBER dan juga memberi Anda lebih banyak fleksibilitas. Jika Anda di tahap selanjutnya menambahkan skala di kolom Oracle maka Anda tidak perlu mengubah tipe data jika Anda sudah menggunakan decimal .

decimal tentu lebih lambat dari int dan long karena dua yang terakhir didukung dalam perangkat keras. Yang mengatakan, Anda harus mengolah sejumlah data yang serius agar dapat membuat perbedaan. Saya masih berpikir bahwa Anda harus menggunakan long jika itu yang Anda hadapi dan kemudian Anda juga harus membiarkan definisi kolom tabel mewakili itu. NUMBER(18,0) untuk long dan seterusnya.

Alasan decimal memetakan sedikit lebih baik adalah long adalah 64 bit dan decimal adalah (semacam) 128 bit.

.NET

Jenis:desimal
Rentang Perkiraan:±1,0 × 10^−28 hingga ±7,9 × 10^28
Presisi:28-29 digit signifikan

Jenis:panjang
Rentang:–9.223.372.036.854.775.808 hingga 9.223.372.036.854.775.807
Presisi:18 (19 untuk ulong) digit signifikan

Oracle

NUMBER default ke 38 digit signifikan dan skala 0 (bilangan bulat).

Jenis:NUMBER
Rentang:+- 1 x 10^-130 hingga 9,99...9 x 10^125
Presisi:38 digit signifikan

Microsoft mengetahui masalahnya dan mencatat

Tipe data ini adalah alias untuk tipe data NUMBER(38), dan dirancang agar OracleDataReader mengembalikan System.Decimal atau OracleNumber sebagai ganti nilai integer. Menggunakan tipe data .NETFramework dapat menyebabkan overflow.

Kalau dipikir-pikir, Anda sebenarnya membutuhkan BigInteger untuk dapat mewakili jumlah angka penting yang sama dengan NUMBER default ke. Saya belum pernah melihat orang melakukan itu dan saya kira itu adalah kebutuhan yang sangat langka. Juga BigInteger masih tidak mau memotongnya sejak NUMBER dapat berupa tak terhingga positif dan negatif.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12c Paket Adaptif

  2. JSON_VALUE() Fungsi di Oracle

  3. Kesalahan Oracle ORA-12154 pada IIS lokal, tetapi tidak dengan Server Pengembangan Visual Studio

  4. Perbedaan Oracle IN vs Exist?

  5. Oracle:Menggabungkan beberapa hasil dalam subquery menjadi satu nilai yang dipisahkan koma