sql >> Databasteknik >  >> RDS >> Oracle

Ställa in Oracle-språkparametrar för DG4ODBC

Som svar på kundfrågor beskriver detta dokument hur du ställer in HS_LANGUAGE och HS_NLS_NCHAR parametrar när du använder DG4ODBC.

Om du använder en Unicode ODBC-drivrutin såsom SQL Server ODBC-drivrutinen, se till att dessa parametrar och värden finns i din DG4ODBC init-fil:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Ersätt språk , territorium och kodsida med Oracle®-språket, territoriet och teckentabellen som överensstämmer med dina databasers språk, språk och teckentabell.

Till exempel, om din databas är SQL Server och dess språk och teckentabell är English (United States) och 1252 , din HS_LANGUAGE parametern skulle se ut så här:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR parametervärdet talar om för DG4ODBC att skicka UCS-2-kodad data till Unicode ODBC API:er, vilket är teckenkodningen som ODBC-standardtillstånden ska användas och är därför den som unixODBC Driver Manager förväntar sig.

Se också till att du har ställt in NLS_LANG innan du startar din Oracle®-applikation. NLS_LANG låter Oracle® veta vilken teckenuppsättning din klientdator använder. Till exempel:

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

Om du använder en ANSI ODBC-drivrutin (som inte stöder breda ODBC API-anrop), måste du ange en icke UTF-8-teckenuppsättning i HS_LANGUAGE värde. Till exempel, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Om du inte gör detta och din Oracle®-databas NLS_CHARACTERSET värdet är satt till en UTF-8-kodning, till exempel AL32UTF8 , DG4ODBC:

  • Använder Unicode ODBC API:er, till exempel SQLDriverConnectW , som unixODBC Driver Manager mappar till deras ANSI-motsvarighet (eller om din HS_FDS_SHAREABLE_NAME parametern pekar på ODBC-drivrutinen delade objektet, gör att anslutningen misslyckas med ett "odefinierad symbol"-fel).
  • Överför UTF-8-kodad data till ODBC API:er, som unixODBC Driver Manager inte stöder. Anslutningen misslyckas eftersom DG4ODBC skickar en UTF-8-kodad anslutningssträng till SQLDriverConnectW , som unixODBC Driver Manager inte kan hantera.

Unicode ODBC-drivrutiner

Unicode ODBC-drivrutiner stöder de breda ODBC API:erna, som har formen SQLxxxW. För att kontrollera om din ODBC-drivrutin stöder breda ODBC-API:er, kontrollera antingen med din drivrutinsleverantör eller aktivera ODBC-drivrutinsloggning, anslut till DG4ODBC och undersök den resulterande loggfilen. Till exempel:

$ 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. Hur man lägger till en primärnyckel till en befintlig tabell i SQL Server (T-SQL-exempel)

  2. Definiera en variabel inom select och använd den inom samma select

  3. Exportera data från en MySQL-databas

  4. Hur man visar den aktuella inställningen för nollutdata i PostgreSQL (psql)