ďťż
 
Oracle: niezainicjowany pakiet - jak zabronic? ďťż
 
Oracle: niezainicjowany pakiet - jak zabronic?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Oracle: niezainicjowany pakiet - jak zabronic?



Leszek Pachura - 11-05-2007 12:31
Oracle: niezainicjowany pakiet - jak zabronic?
  Czesc,

Mamy przykladowy pakiet:

create package TESTOWY is
procedure PROC;
end;

create package body TESTOWY is
procedure PROC is
begin
-- tutaj tresc procedury PROC
end;

begin
-- tutaj inicjalizacja pakietu TESTOWY
end;

Kiedy wywolamy TESTOWY.PROC() po raz pierwszy, wykonana zostanie sekcja
inicjalizacyjna pakietu (np. zostanie odczytana jakas konfiguracja, etc.) Jesli
w trakcie wykonywania tej sekcji zajdzie wyjatek, procedura PROC nie zostanie
wykonana...

....ale tylko za pierwszym razem! Przy nastepnych razach, pomimo tego ze nasz
pakiet nie zostal poprawnie (do konca) zainicjalizowany, metode PROC bedzie
mozna odpalac.

Dlaczego Oracle sie tak zachowuje? Da sie to jakos madrze uniemozliwic - zeby z
niezainicjalizowanego pakietu nie dalo sie korzystac?

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





astaroth - 11-05-2007 12:31

  Może tak:

create package body TESTOWY is
init_ok boolean := false;

procedure init is
--tutaj inicjalizacja pakietu TESTOWY
init_ok := true;
end;

procedure PROC is
begin
if not init_ok then
init;
end;
-- tutaj tresc procedury PROC
end;

end;




Lucyna Witkowska - 11-05-2007 12:31

  Leszek Pachura <pachuraWYTNIJTO@op.pl> napisał:

> Mamy przykladowy pakiet:
> create package TESTOWY is
(...)

> Kiedy wywolamy TESTOWY.PROC() po raz pierwszy, wykonana zostanie sekcja
> inicjalizacyjna pakietu (np. zostanie odczytana jakas konfiguracja, etc.) Jesli
> w trakcie wykonywania tej sekcji zajdzie wyjatek, procedura PROC nie zostanie
> wykonana...
> ...ale tylko za pierwszym razem! Przy nastepnych razach, pomimo tego ze nasz
> pakiet nie zostal poprawnie (do konca) zainicjalizowany, metode PROC bedzie
> mozna odpalac.
> Dlaczego Oracle sie tak zachowuje?

Bo sekcja inicjalizacyjna wykonywana jest tylko przy pierwszym odwolaniu
do obiektu pakietu.

> Da sie to jakos madrze uniemozliwic - zeby z
> niezainicjalizowanego pakietu nie dalo sie korzystac?

Hm, a po co tworzyc pakiet, z ktorego ma nie można korzystac ;-)
Nie znam problemu, ale:
- sekcja inicjalizacyjna moze miec swoją obsługę wyjątków
- w procedurze można częsci kodu wykonywac warunkowo w zaleznosci od
wartosci zmiennych pakietu itd.

Pozdrowienia,
LW
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • own-team.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com