Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Ustawianie parametrów języka Oracle dla DG4ODBC

W odpowiedzi na zapytania klientów ten dokument opisuje, jak ustawić HS_LANGUAGE i HS_NLS_NCHAR parametry podczas korzystania z DG4ODBC.

Jeśli używasz sterownika ODBC Unicode, takiego jak sterownik ODBC SQL Server, upewnij się, że te parametry i wartości są obecne w pliku początkowym DG4ODBC:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Zastąp język , terytorium i strona_kodowa z językiem, terytorium i stroną kodową Oracle®, które odpowiadają językowi, lokalizacji i stronie kodowej Twojej bazy danych.

Na przykład, jeśli Twoja baza danych to SQL Server, a jej język i strona kodowa to English (United States) i 1252 , Twój HS_LANGUAGE parametr wyglądałby tak:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR wartość parametru mówi DG4ODBC o przekazywaniu danych zakodowanych w UCS-2 do interfejsów API Unicode ODBC, co oznacza kodowanie znaków, których stany standardu ODBC powinny być używane, a zatem jest to ten, którego oczekuje menedżer sterowników unixODBC.

Upewnij się również, że ustawiłeś NLS_LANG przed uruchomieniem aplikacji Oracle®. NLS_LANG informuje Oracle®, jakiego zestawu znaków używa Twój komputer kliencki. Na przykład:

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

Jeśli używasz sterownika ANSI ODBC (który nie obsługuje szerokich wywołań API ODBC), musisz określić zestaw znaków inny niż UTF-8 w HS_LANGUAGE wartość. Na przykład HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Jeśli tego nie zrobisz, a NLS_CHARACTERSET Twojej bazy danych Oracle® wartość jest ustawiona na kodowanie UTF-8, na przykład AL32UTF8 , DG4ODBC:

  • Używa Unicode ODBC API, na przykład SQLDriverConnectW , który menedżer sterowników unixODBC mapuje na ich odpowiednik ANSI (lub jeśli Twój HS_FDS_SHAREABLE_NAME parametr wskazuje na obiekt współdzielony sterownika ODBC, powoduje niepowodzenie połączenia z błędem „niezdefiniowany symbol”).
  • Przekazuje dane zakodowane w UTF-8 do interfejsów API ODBC, których nie obsługuje menedżer sterowników unixODBC. Połączenie nie powiodło się, ponieważ DG4ODBC przekazuje ciąg połączenia zakodowany w UTF-8 do SQLDriverConnectW , którego menedżer sterowników unixODBC nie jest w stanie obsłużyć.

Sterowniki Unicode ODBC

Sterowniki ODBC Unicode obsługują szerokie interfejsy API ODBC, które mają postać SQLxxxW. Aby sprawdzić, czy sterownik ODBC obsługuje szerokie interfejsy API ODBC, skontaktuj się z dostawcą sterownika lub włącz rejestrowanie sterownika ODBC, połącz się z DG4ODBC i sprawdź wynikowy plik dziennika. Na przykład:

$ 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. Jak przechowywać ciąg dłuższy niż 4000 znaków w bazie danych Oracle przy użyciu Java/JDBC?

  2. Czy substr czy LIKE są szybsze w Oracle?

  3. Zagnieżdżone łączenie pętli w Oracle 11g

  4. Zip przy użyciu procedury składowanej Oracle

  5. PL/SQL wydrukuj ref kursor zwrócony przez procedurę składowaną