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

Đặt tham số ngôn ngữ Oracle cho DG4ODBC

Để trả lời các câu hỏi của khách hàng, tài liệu này mô tả cách đặt HS_LANGUAGEHS_NLS_NCHAR khi sử dụng DG4ODBC.

Nếu bạn đang sử dụng trình điều khiển Unicode ODBC chẳng hạn như trình điều khiển ODBC SQL Server, hãy đảm bảo các tham số và giá trị này có trong tệp init DG4ODBC của bạn:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Thay thế ngôn ngữ , lãnh thổ code_page với ngôn ngữ, lãnh thổ và trang mã Oracle® tương ứng với trang ngôn ngữ, địa điểm và mã của cơ sở dữ liệu của bạn.

Ví dụ:nếu cơ sở dữ liệu của bạn là SQL Server, ngôn ngữ và trang mã của nó là English (United States)1252 , HS_LANGUAGE của bạn tham số sẽ giống như sau:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR giá trị tham số yêu cầu DG4ODBC chuyển dữ liệu được mã hóa UCS-2 tới API Unicode ODBC, là ký tự mã hóa trạng thái tiêu chuẩn ODBC nên được sử dụng và do đó là ký tự mà Trình quản lý trình điều khiển unixODBC mong đợi.

Đồng thời đảm bảo rằng bạn đã đặt NLS_LANG trước khi bắt đầu ứng dụng Oracle® của bạn. NLS_LANG cho phép Oracle® biết bộ ký tự mà máy khách của bạn đang sử dụng. Ví dụ:

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

Nếu bạn đang sử dụng trình điều khiển ANSI ODBC (không hỗ trợ lệnh gọi API ODBC rộng), bạn cần chỉ định bộ ký tự không phải UTF-8 trong HS_LANGUAGE giá trị. Ví dụ:HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Nếu bạn không làm điều này và NLS_CHARACTERSET của cơ sở dữ liệu Oracle® của bạn giá trị được đặt thành mã hóa UTF-8, ví dụ:AL32UTF8 , DG4ODBC:

  • Sử dụng các API Unicode ODBC, ví dụ:SQLDriverConnectW , mà Trình quản lý trình điều khiển unixODBC ánh xạ tới ANSI tương đương của chúng (hoặc nếu HS_FDS_SHAREABLE_NAME của bạn tham số trỏ đến đối tượng được chia sẻ trình điều khiển ODBC, khiến kết nối không thành công với lỗi "ký hiệu không xác định").
  • Truyền dữ liệu được mã hóa UTF-8 tới API ODBC mà Trình quản lý trình điều khiển unixODBC không hỗ trợ. Kết nối không thành công vì DG4ODBC chuyển một chuỗi kết nối được mã hóa UTF-8 tới SQLDriverConnectW , mà Trình quản lý trình điều khiển unixODBC không thể xử lý.

Trình điều khiển ODBC Unicode

Trình điều khiển Unicode ODBC hỗ trợ API ODBC rộng, có dạng SQLxxxW. Để kiểm tra xem trình điều khiển ODBC của bạn có hỗ trợ API ODBC rộng hay không, hãy kiểm tra với nhà cung cấp trình điều khiển của bạn hoặc bật ghi nhật ký trình điều khiển ODBC, kết nối với DG4ODBC và kiểm tra tệp nhật ký kết quả. Ví dụ:

$ 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. Chèn các cột mới vào giữa bảng?

  2. Làm cách nào để xuất kết quả sql oracle thành một tệp trong windows?

  3. Truy vấn hữu ích về việc hết hạn mật khẩu / Chính sách / Cài đặt của oracle EBS

  4. Làm cách nào để tìm các giá trị trùng lặp trong bảng trong Oracle?

  5. Oracle:OALL8 ở trạng thái không nhất quán