cancel
Showing results for 
Search instead for 
Did you mean: 

Default NLS instead of localized (Danish) crashing SQL w/ "Invalid number"?

Former Member
0 Kudos

Exploring the root cause for our Oracle SQL not working in our SAP MII 12.2

Proof of Concept installation, we found that all our Oracle JDBC

connections in MII 12.2 are somehow somewhere set by default to Danish

NLS (our native language).

This results in that decimal seperators are switched from default ".,"

to ",.", meaning that all numeric conversions of strings expect

comma "," to be the decimal seperator.

This results in ORA- invalid numbers of to_number() and calculations on all such number strings that used to

work with xMII 11.5.

We have work-around'ed the issue by setting the following INIT command

on each and every Oracle connection:

alter session set NLS_NUMERIC_CHARACTERS='.,'

But we believe the right solution would be to reset SAP MII / NW to the

default (American) so it would not be tampering with the NLS - and to

hinder further undiscovered side effects of the changed NLS.

How do we do change the NW/MII NLS globally?

Steps for Reconstruction

SELECT * FROM v$nls_parameters

Old MII 11.5 connections displays:

NLS_LANGUAGE AMERICAN

NLS_NUMERIC_CHARACTERS .,

etc.

Our MII 12.2 displays:

NLS_LANGUAGE DANISH

NLS_NUMERIC_CHARACTERS ,.

[work arounded to:]

NLS_NUMERIC_CHARACTERS .,

Thank you Very Much!

Mogens

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hello,

if I am not making a mistake, it's adjustable on the DB. You can assign each user a own language and this will take affect the NLS.

Which language has the user, that established the connection from the mii to the db? Please change the language for the user from danish to xxx on the DB. Inside MII or NW Disconnect from the DB and reconnect.

Hope this help you out..

BR

Pedro Iglesias

agentry_src
Active Contributor
0 Kudos

Hi Mogens,

Are you doing the Alter statement in the Connection tab of the Data Server definition or are you including it in each SQL action block?

Regards,

Mike

Former Member
0 Kudos

Pedro, thank you very much for you work-around.

It might be technically possible but not easy in our restricted environment. Also, that would require even more cumbersome changes for each DB side than the current workaround.

AND it currently works (was set to default=American) with the same DB user on the same DB from xMII 11.5 - so it is a specific change with our MII 12.2 installation.

Mike, the work-around is that we make the ALTER SESSION on each connector init command, not on each call.

But with that work-around we need to change every NLS param on every database, not just the decimals.

Otherwise, the days are still translated to MANdag instead of MONday etc. which we don't want.