2015-11-22 48 views
8

Czy w dowolnym momencie można uzyskać ciąg zawierający listę lokalnych nazw zmiennych i ich wartości, aby ułatwić debugowanie (np. Dodać do wiersza w tabeli dziennika bazy danych jako ciąg tekstowy)?Lokalne zmienne PL/SQL zrzutu

+2

Z pewnością jest to jakoś możliwe, ponieważ nie ma trybu debuging w Oracle DB, ale proponuję, aby korzystać z niektórych IDE jak PL/SQL Deweloper lub programista Oracle SQL, który ma wbudowane okno debugowania, które pozwala dokładnie to zrobić - aby ustawić punkt przełomowy, wejść, aby zobaczyć aktualne wartości zmiennych, itp. – Martina

+0

Osobiście nie używam debuggerów, ale loguję. W zakresie PL/SQL, który jest dedykowaną tabelą dziennika, niewielką ilością wspierającego kodu PL/SQL, kompilacją warunkową i wieloma ładnie sformatowanymi ["print" -wartościami] (http://stackoverflow.com/q/189562/272735) . – user272735

+0

Czy istnieje ogólny sposób przechwytywania wszystkich zmiennych lokalnych w celu ich zarejestrowania? –

Odpowiedz

1

Nie, nie jest to możliwe.

DBMS_DEBUG może kontrolować zmienne PL/SQL, ale wymaga zawieszenia uruchomionej sesji i dołączenia do niej drugiej sesji w celu przeprowadzenia inspekcji.

Zastanawiałem się nad stworzeniem interfejsu API do odrodzenia drugiej sesji (za pośrednictwem DBMS_SCHEDULER), która zatrzymałaby sesję wywołującą, sprawdzała ją, restartowała i raportowała.

To byłby bardzo zaangażowany i nie jestem pewien, czy byłby to obsługiwany przypadek użycia z DBMS_DEBUG.

Krótko o tym, nic nie ma.

2

Nie można uzyskać łańcucha z informacjami debugowania, jednak za pomocą narzędzia Sql Developer (bezpłatne narzędzie Oracle) można DEBUGOWAĆ twój pl/sql jak zwykle podobnie jak każde inne narzędzie do debugowania dla innego języka, w tym VALUE dla dowolnej zmiennej.

To jest wzięte z dokumentacji:

Sqldeveloper debug overview

HTH

+0

Ta odpowiedź powinna zostać zwiększona o więcej głosów upvotes. Dzięki. – Wolfgang