Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren und Trigger » Prozeduren, Funktionen, Trigger und Ereignisse bei der Fehlersuche » Praktische Einführung: Erste Schritte mit dem Debugger » Lektion 2: In einer gespeicherten Prozedur nach Fehlern suchen

 

Fehlerdiagnose

Setzen Sie zur Fehlerdiagnose Breakpoints in der Prozedur und führen Sie den Code schrittweise aus. Beobachten Sie dabei die Werte der Variablen.

Hier setzen Sie einen Breakpoint bei der ersten ausführbaren Anweisung in der Prozedur.

♦  So führen Sie die Fehlerdiagnose durch
  1. Wählen Sie Modus » Debuggen.

  2. Im rechten Fensterausschnitt doppelklicken Sie auf Debugger_Tutorial (GROUPO).

  3. Im rechten Fensterausschnitt suchen Sie nach folgender Anweisung:

    OPEN cursor_this_customer;
  4. Um einen Breakpoint hinzuzufügen, klicken Sie auf den senkrechten grauen Bereich links von der Anweisung. Der Breakpoint wird als roter Kreis dargestellt.

  5. Im linken Fensterausschnitt rechtsklicken Sie auf Debugger_Tutorial (GROUPO) und wählen Aus Interactive SQL ausführen.

    Auf dem Register Verbindungen von Sybase Central wird ein gelber Pfeil eingeblendet, der den Breakpoint angibt.

  6. Klicken Sie im Fensterausschnitt Debugger-Details auf das Register Lokal, um eine Liste von lokalen Variablen in der Prozedur mit ihrem aktuellen Wert und Datentyp anzuzeigen. Die Variablen "top_company", "top_value", "this_value" und "this_company" sind alle uninitialisiert und daher gleich NULL.

  7. Drücken Sie F11, um durch die Prozedur zu scrollen. Der Wert der Variablen ändert sich, wenn Sie die folgende Zeile erreichen:

    IF this_value > top_value THEN
  8. Drücken Sie noch einmal F11, um festzustellen, welche Verzweigung die Ausführung nimmt. Der gelbe Pfeil bewegt sich zurück zum folgenden Text:

    customer_loop: loop

    Die IF-Prüfung wurde nicht als TRUE zurückgegeben. Der Grund dafür ist, dass ein Vergleich eines beliebigen Wertes mit NULL immer NULL zurückgibt. Durch NULL ist die Bedingung nicht erfüllt und der Code innerhalb der Anweisung IF...END IF wird nicht ausgeführt.

    Sie haben vielleicht inzwischen bemerkt, dass der Grund für das Problem darin liegt, dass "top_value" nicht initialisiert wurde.