Heim >Datenbank >Oracle >So debuggen Sie gespeicherte Prozeduren in Oracle

So debuggen Sie gespeicherte Prozeduren in Oracle

PHPz
PHPzOriginal
2023-04-25 16:12:335512Durchsuche

Oracle-Datenbank ist ein relationales Datenbankverwaltungssystem, das von großen Unternehmen häufig verwendet wird. Seine leistungsstarken Funktionen und Stabilität werden von Menschen geschätzt. Im eigentlichen Entwicklungsprozess müssen Entwickler häufig gespeicherte Prozeduren schreiben, um verschiedene Geschäftslogiken zu implementieren, und können beim Debuggen gespeicherter Prozeduren auf einige Probleme stoßen.

In diesem Artikel erfahren Sie, wie Sie gespeicherte Prozeduren in einer Oracle-Datenbank debuggen.

1. Verwenden Sie SQL Developer zum Debuggen gespeicherter Prozeduren.

SQL Developer ist ein kostenloses Datenbankentwicklungstool, das offiziell von Oracle bereitgestellt wird. Es bietet einen leistungsstarken Debugger, der zum Debuggen gespeicherter PL/SQL-Prozeduren, Funktionen, Trigger usw. verwendet werden kann. Im Folgenden verwenden wir eine einfache gespeicherte Prozedur als Beispiel, um zu demonstrieren, wie Sie mit SQL Developer gespeicherte Prozeduren debuggen.

1. Erstellen Sie eine gespeicherte Prozedur

Zuerst müssen wir eine einfache gespeicherte Prozedur erstellen:

CREATE OR REPLACE PROCEDURE my_proc (p_input IN NUMBER, p_output OUT NUMBER) AS
BEGIN
p_output := p_input * 2;
END ;

Diese gespeicherte Prozedur empfängt einen Eingabeparameter p_input, multipliziert ihn mit 2 und weist ihn dem Ausgabeparameter p_output zu. In realen Szenarien werden gespeicherte Prozeduren komplexer sein, aber die in diesem Artikel gezeigten Debugging-Methoden sind auch auf komplexe gespeicherte Prozeduren anwendbar.

2. Haltepunkte setzen

Als nächstes müssen wir Haltepunkte in der gespeicherten Prozedur setzen, um den Programmfluss anzuhalten und Variablenwerte während der Ausführung zu überprüfen. Das Festlegen eines Haltepunkts in SQL Developer ist sehr einfach. Sie müssen lediglich die Zeile auswählen, in der Sie einen Haltepunkt im Code der gespeicherten Prozedur festlegen möchten, und dann auf den leeren Bereich neben der Zeilennummer klicken. Wie im Bild unten gezeigt, habe ich in Zeile 3 einen Haltepunkt gesetzt.

3. Führen Sie die gespeicherte Prozedur aus

Jetzt können wir die gespeicherte Prozedur in SQL Developer ausführen und den Programmablauf während der Ausführung anhalten, um den Variablenwert zu überprüfen. Wir können den folgenden Code verwenden, um die gespeicherte Prozedur auszuführen und einen Parameterwert zu übergeben:

DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
my_proc(v_input, v_output);
END;

Nach der Ausführung dieses Codes , öffnet SQL Developer automatisch den Debugger und hält das Programm in Zeile 3 an, wie in der Abbildung unten gezeigt. Wir können sehen, dass der Wert von v_input 10 ist und während der schrittweisen Ausführung auch der Wert von p_output 20 zugewiesen wird.

4. Überprüfen Sie die Variablenwerte

Während das Programm angehalten ist, können wir den Wert jeder Variablen überprüfen. Sie können den Wert einer Variablen anzeigen, indem Sie im Code auf ihren Namen klicken oder das Monitorfenster verwenden. In SQL Developer können Sie die Werte mehrerer Variablen gleichzeitig anzeigen, indem Sie im Monitorfenster das Menü Debuggen > Debugging Windows >

Wie im Bild unten gezeigt, habe ich v_input, v_output und p_output zum Monitorfenster hinzugefügt, und Sie können sehen, dass ihre Werte 10, 0 bzw. 0 sind.

Als nächstes können wir die Ausführung des Programms bis zum nächsten Haltepunkt oder dem Ende des Programms fortsetzen, indem wir oben im Debugger-Fenster auf die Schaltfläche „Ausführung fortsetzen“ klicken.

2. Verwenden Sie das DBMS_DEBUG-Paket zum Debuggen gespeicherter Prozeduren.

Wenn Sie nicht über das SQL Developer-Tool verfügen, können Sie auch das von Oracle bereitgestellte DBMS_DEBUG-Paket zum Debuggen gespeicherter Prozeduren verwenden. Im Folgenden stellen wir die Verwendung des DBMS_DEBUG-Pakets vor.

Das DBMS_DEBUG-Paket ist ein von Oracle Database bereitgestelltes Toolpaket, mit dem Sie Haltepunkte in gespeicherten Prozeduren festlegen, den Programmausführungsprozess anhalten und die Werte von Programmvariablen überprüfen können. Das Debuggen gespeicherter Prozeduren mit dem DBMS_DEBUG-Paket erfordert die folgenden Schritte:

1 Kompilierungsoptionen festlegen

Zuerst müssen wir die Kompilierungsoptionen in der gespeicherten Prozedur festlegen, damit das DBMS_DEBUG-Paket verwendet werden kann. Fügen Sie die folgende Anweisung vor dem Code der gespeicherten Prozedur hinzu:

ALTER SESSION SET PLSQL_DEBUG=TRUE;

2 Starten Sie den Debugger

Als nächstes müssen wir den Debugger in der gespeicherten Prozedur starten. Fügen Sie der gespeicherten Prozedur den folgenden Code hinzu:

DBMS_DEBUG_DBMS_DEBUG.CONNECT_SESSION;

Dieser Code startet den Debugger und wartet darauf, dass der Client eine Verbindung herstellt.

3. Verbinden Sie den Client

Jetzt müssen wir eine Verbindung zur Datenbank im Client herstellen und eine Verbindung zu dem Debugger herstellen, den wir gerade gestartet haben. In SQL Plus können Sie den folgenden Befehl verwenden, um eine Verbindung herzustellen:

EXEC DBMS_DEBUG_JDWP.CONNECT_TCP(‘localhost’,4000);

Wenn die Verbindung erfolgreich ist, wird „connected“ angezeigt.

4. Haltepunkte festlegen

Nachdem die Clientverbindung erfolgreich war, können wir Haltepunkte in der gespeicherten Prozedur festlegen. Verwenden Sie den folgenden Code, um einen Haltepunkt in der gespeicherten Prozedur festzulegen:

DBMS_DEBUG_JDWP.BREAKPOINT(‘my_proc’,4);

Dieser Befehl setzt einen Haltepunkt in Zeile 4 der gespeicherten Prozedur. my_proc ist der Name der gespeicherten Prozedur.

5. Führen Sie die gespeicherte Prozedur aus

Jetzt können wir die gespeicherte Prozedur ausführen und das Programm während der Ausführung anhalten, damit wir den Wert der Variablen überprüfen können.

Führen Sie den folgenden Code in SQL Plus aus:

DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
my_proc(v_input, v_output);
END;

Wenn der Debugger richtig eingerichtet ist, wird das Programm dies tun landen Sie bei Schritt 4. Die Leitung ist pausiert. Im pausierten Zustand können Sie die folgenden Befehle verwenden, um den Wert der Variablen zu überprüfen:

DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_input');
DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_output');

Diese beiden Befehle können die Werte anzeigen ​der Variablen v_input und v_output .

6. Ausführung fortsetzen

Wenn Sie nach der Überprüfung des Variablenwerts noch mit der Ausführung des Programms fortfahren müssen, können Sie den folgenden Befehl verwenden:

DBMS_DEBUG_JDWP.CONTINUE;

Dieser Befehl setzt die Ausführung des Programms bis zum nächsten Haltepunkt oder dem Ende fort Programm.

Zusammenfassung

In Oracle-Datenbanken ist das Debuggen gespeicherter Prozeduren eine relativ häufige Aufgabe. In diesem Artikel werden zwei Methoden zum Debuggen gespeicherter Prozeduren vorgestellt: die Verwendung von SQL Developer und das DBMS_DEBUG-Paket. Unabhängig von der verwendeten Methode können Sie problemlos Haltepunkte in gespeicherten Prozeduren festlegen, die Programmausführung anhalten und die Werte von Variablen überprüfen, um Entwicklern dabei zu helfen, Probleme schnell zu lokalisieren und Fehler zu beheben.

Das obige ist der detaillierte Inhalt vonSo debuggen Sie gespeicherte Prozeduren in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn