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