Kbase 15467: Decimal separator problem when using SQL*NET SE: 1465
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/05/1998 |
|
Decimal separator problem when using SQL*NET SE: 1465
When using ORACLE-Dataserver in combination with SQL*NET there can be
decimal-separator problems if the ORACLE products are not configured
in the same way.
The message you can receive is:
SYSTEM ERROR: Oracle number has unexpected format (1465).
This error points in the direction of the use of a wrong CODE-PAGE
especially when using a dos-windows client) but the use of -E or
another code-page will not help.
The thing to verify is the ORACLE.INI file that can contain
information about Native Language Support. Every ORACLE product that
is started will read this file to setup his environment. If there is a
difference in those files concerning the Native Language it will
result in this error (1465).
You must check the values of the NLS_LANG variable in the oracle.ini
file of the ORACLE database instance and the oracle.ini file SQL*NET
uses. These values must be the same so that ORACLE will not be
confused when transporting data over the network.
When the NLS_LANG variables are the same the problem will be solved.
To complete this KBase there can be following added to get arround
the problem if the changes in the oracle.ini file do not help.
1) It seems that the problem is independent on the value of -E
parameter.
2) Similar problem occurs with date values.
3) The following corrects the problem.
RUN STORED-PROCEDURE send-sql-statement
("ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,'").
/* The value should reflect the database setting */
CLOSE STORED-PROCEDURE send-sql-statement.
RUN STORED-PROCEDURE send-sql-statement
("ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YY'").
/* The value should reflect the database setting */
CLOSE STORED-PROCEDURE send-sql-statement.
4) Database settings can be set by running the following procedure:
DEF VAR h1 AS INTEGER.
RUN STORED-PROC send-sql-statement h1 = PROC-HANDLE ("select *
from nls_database_parameters").
FOR EACH proc-text-buffer WHERE PROC-HANDLE = h1:
DISP proc-text-buffer.
END.
CLOSE STORED-PROC send-sql-statement.
Progress Software Technical Support Note # 15467