Oracle Alter Session in Procedure

Hallöchen,
ich bastel gerade an einer Stored Procedure rum.

Und zwar habe ich Probleme mit Datumsangaben im Allgemeinen und im Besonderen.

Aus diesem Grund frage ich in der Stored Procedure ab, wie die Ländereinstellungen der Session sind:

select VALUE into v_value from nls_session_parameters
where PARAMETER = ‚NLS_TERRITORY‘;

Wenn v_value nicht ‚Germany‘ zurück gibt, möchte ich das ändern:

if v_value ‚GERMANY‘ then
alter session set nls_territory=‚GERMANY‘;
nd if;

Das lässt er aber beim compilieren nicht zu…

wie kann ich denn sonst die Einstellung in einer Stored Procedure ändern?

Gruß

Sina

Mahlzeit,

du kannst den Compiler dadurch überlisten, daß du die ALTER-SESSION-Anfweisung in ein String packst und diese über dynamisches SQL ausführst:

create or replace procedure session\_altern as
v\_value varchar2(50);
begin
select VALUE into v\_value from nls\_session\_parameters where PARAMETER = 'NLS\_TERRITORY';
if v\_value 'GERMANY' then
 execute immediate 'alter session set nls\_territory=''GERMANY''';
end if;
end;
/

Prozedur wurde angelegt.

SQL\> select value from nls\_session\_parameters where PARAMETER = 'NLS\_TERRITORY';

VALUE
----------------------------------------
AMERICA

SQL\> exec session\_altern

PL/SQL-Prozedur wurde erfolgreich abgeschlossen.

SQL\> select value from nls\_session\_parameters where PARAMETER = 'NLS\_TERRITORY';

VALUE
----------------------------------------
GERMANY

SQL\>

Natürlich solltest du die Anweisung vorher getestet haben…

Gruß

Sancho

Hallo Sancho,
Du bist mein absoluter Held!!!

Supervielen dank!!!

Gruß
Sina