2011-02-01 11 views
5

Właśnie dostałem mój najgorszy koszmar utrzymania: cichy błąd.Oracle Rel.Net niezgłoszony błąd przy wywołaniu do procedury w nieprawidłowym opakowaniu

Wywoływałem procedurę przy użyciu Odp.Net w niestandardowym pakiecie, a wywołanie procedury nie powiodło się bez żadnego wyjątku (weryfikowane przy użyciu zarówno debugowania krok po kroku, jak i klauzuli catch all). Po wielu poszukiwaniach zauważyłem, że Pakiet został unieważniony (pewne nieszczęśliwe wypadki na serwerze), po rekompilacji pakietu wszystko wróciło do normy (kod wywoławczy był poprawny i niezmodyfikowany).

Ponieważ w Oracle jest naprawdę łatwo unieważnić pakiet, muszę złapać tego rodzaju błąd, jeśli tylko loguję go do debugowania.

Z MS System.Data.OracleClient wyrzucono wyjątek OracleException w tym przypadku, czy istnieje sposób na uzyskanie podobnego zachowania z Oracle OracleAccess? Jakiś rodzaj parametru sqlnet.ora? Nie znalazłem podobnego problemu nigdzie w sieci.

przy użyciu serwera Oracle11R2, najnowszego klienta Oracle Win32. .Net3.5.

+0

Michel, nie jestem pewien, że ci się to spodoba, ale używam odp.net i jeśli spróbuję wywołać nieprawidłowy pakiet, otrzymuję wyjątki - wyjątek, który widzę w .net jest wierny wyjątek w Oracle. Procedury przechowywane, które wywołujemy, zawsze będą miały parametr out, nie wiem, czy to by miało znaczenie (może to spowodować, że odp.net wykona pewne przetwarzanie, które może spowodować odrzucenie wyjątku) – PeteH

Odpowiedz

0

To jest problem dostawcy. Zmieniłem ODP.NET po podobnym wyjątku. Teraz używam dotConnect for Oracle i polecam zrobić to samo.

+0

Niestety, moi klienci są dość konserwatywni. Znam te biblioteki, wolę tylko czyste rozwiązanie Oracle. – Michel

2

Czy próbowałeś już włączyć rejestr śledzenia odp.net?

<oracle.dataaccess.client> 
    <settings> 
    <add name="TraceFileName" value="c:\odpnet1.trc"/> 
    <add name="TraceLevel" value="63"/> 
</settings> 
</oracle.dataaccess.client> 

Może to rzuci trochę światła?