ďťż
 
Oracle: Dlaczego NO_DATA_FOUND jest ignorowane? ďťż
 
Oracle: Dlaczego NO_DATA_FOUND jest ignorowane?
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: Dlaczego NO_DATA_FOUND jest ignorowane?



Leszek Pachura - 11-05-2007 12:31
Oracle: Dlaczego NO_DATA_FOUND jest ignorowane?
  Czesc,

Napisalem taka prosta procedure, ktora ma sie tylko wywalac ze wzgledu
na wyjatek NO_DATA_FOUND:

create or replace procedure DO_FAIL is
TMP number;
begin
dbms_output.put_line('DO_FAIL: start.');
select 1 into TMP from DUAL where 1 = 2;
dbms_output.put_line('DO_FAIL: end.');
end;

....niestety, kiedy ja odpalam (z SQL*Plusa, z TOAD-a...), objawy sa nastepujace:

SQL> call DO_FAIL();
DO_FAIL: start.

Czyli: procedura jest przerywana, ale wyjatek jest "po cichu" ignorowany.
Dlaczego tak sie dzieje? Kiedy np. wywolam dzielenie przez zero,
dziala to (= wywala sie) poprawnie:

SQL> call DO_FAIL();
DO_FAIL: start.

ERROR at line 1:
ORA-01476: divisor is equal to zero
ORA-06512: at "MYUSER.DO_FAIL", line 5

Jak zatem wymusic propagowanie wyjatku NO_DATA_FOUND wzwyz?

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





dipl.usunto@gazeta.lp - 11-05-2007 12:31

 

Leszek Pachura napisał(a):
>
> Czyli: procedura jest przerywana, ale wyjatek jest "po cichu" ignorowany.
> Dlaczego tak sie dzieje? Kiedy np. wywolam dzielenie przez zero,
> dziala to (= wywala sie) poprawnie:

wykonane w sqlplusie, dokładnie to co zamieściłeś w poście,
wersja serwera Oracle 10.2.0.3.0,
z tym, że użyłem exec (albo begin do_fail; end;)

SQL> create procedure DO_FAIL is
2 TMP number;
3 begin
4 dbms_output.put_line('DO_FAIL: start.');
5 select 1 into TMP from DUAL where 1 = 2;
6 dbms_output.put_line('DO_FAIL: end.');
7 end;
8 /

Procedura zosta-a utworzona.

SQL> exec do_fail
DO_FAIL: start.
BEGIN do_fail; END;

*
BúíD w linii 1:
ORA-01403: nie znaleziono danych
ORA-06512: przy "USER.DO_FAIL", linia 5
ORA-06512: przy linia 1
--
pozdr dipl
w bud.: http://swiatlazienek.net i http://hurtownie.info.pl
ps) odpisując na priva usuń tekst ".usunto" oraz zmień lp -> pl w
adresie
  • 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
  • red-hacjenda.opx.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