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

Mengatur Parameter Bahasa Oracle untuk DG4ODBC

Sebagai tanggapan atas pertanyaan pelanggan, dokumen ini menjelaskan cara menyetel HS_LANGUAGE dan HS_NLS_NCHAR parameter saat menggunakan DG4ODBC.

Jika Anda menggunakan pengandar ODBC Unicode seperti pengandar SQL Server ODBC, pastikan parameter dan nilai ini ada di file init DG4ODBC Anda:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Ganti bahasa , wilayah dan halaman_kode dengan halaman bahasa, wilayah, dan kode Oracle® yang sesuai dengan halaman bahasa, lokal, dan kode database Anda.

Misalnya, jika database Anda adalah SQL Server, dan bahasa serta halaman kodenya adalah English (United States) dan 1252 , HS_LANGUAGE . Anda parameternya akan terlihat seperti ini:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR nilai parameter memberi tahu DG4ODBC untuk meneruskan data yang disandikan UCS-2 ke Unicode ODBC API, yang merupakan pengkodean karakter status standar ODBC yang harus digunakan dan oleh karena itu adalah yang diharapkan oleh Manajer Pengandar unixODBC.

Pastikan juga Anda telah menyetel NLS_LANG sebelum memulai aplikasi Oracle® Anda. NLS_LANG memungkinkan Oracle® mengetahui set karakter apa yang digunakan mesin klien Anda. Misalnya:

$ echo $LANG
en_US.UTF-8
$ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus

Jika Anda menggunakan driver ANSI ODBC (yang tidak mendukung panggilan API ODBC lebar), Anda perlu menentukan set karakter non UTF-8 di HS_LANGUAGE nilai. Misalnya, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Jika Anda tidak melakukan ini dan NLS_CHARACTERSET database Oracle® Anda nilai diatur ke pengkodean UTF-8, misalnya AL32UTF8 , DG4ODBC:

  • Menggunakan Unicode ODBC API, misalnya, SQLDriverConnectW , yang dipetakan oleh Pengelola Driver unixODBC ke ANSI yang setara (atau jika HS_FDS_SHAREABLE_NAME Anda parameter menunjuk ke objek bersama driver ODBC, menyebabkan koneksi gagal dengan kesalahan "simbol tidak terdefinisi").
  • Meneruskan data yang disandikan UTF-8 ke API ODBC, yang tidak didukung oleh Manajer Pengandar unixODBC. Sambungan gagal karena DG4ODBC meneruskan string sambungan yang disandikan UTF-8 ke SQLDriverConnectW , yang tidak dapat ditangani oleh Pengelola Driver unixODBC.

Driver ODBC Unicode

Driver ODBC Unicode mendukung API ODBC yang luas, yang berbentuk SQLxxxW. Untuk memeriksa apakah driver ODBC Anda mendukung API ODBC yang luas, periksa dengan vendor driver Anda, atau, aktifkan logging driver ODBC, sambungkan dengan DG4ODBC dan periksa file log yang dihasilkan. Misalnya:

$ more /etc/odbc.ini
[SQLSERVER_SAMPLE]
.
.
.
Logging=Yes
LogFile=/tmp/mssql.log

$ ./sqlplus / as sysdba
$ select * from mytable@mssqllink;
$ exit
$ more /tmp/mssql.log
.
.
.
ENTRY:   SQLGetInfoW: connection_handle...

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

  2. Oracle SQL:Perbarui tabel dengan data dari tabel lain

  3. Memperbarui Tabel Di Oracle Jika Nilai Bidang Apa Pun Null Dan Menentukan Bahwa Pembaruan Berhasil

  4. Mengapa Oracle 10g tidak mengeluh tentang ambiguitas kolom?

  5. Java:Membaca Blob dari Oracle