Diagnostizieren Sie die gespeicherte Prozedur debugger_tutorial, indem Sie Breakpoints setzen, den Code durchgehen und den Wert der Variablen überwachen, während die Prozedur ausgeführt wird.
Voraussetzungen
In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Erste Schritte mit dem Debugger.
In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Debugger-Start und Fehlersuche.
Suchen Sie im linken Fensterausschnitt auf der Registerkarte SQL nach debugger_tutorial (GROUPO) und der folgenden Anweisung:
OPEN cursor_this_customer; |
Fügen Sie einen Breakpoint hinzu, indem Sie auf den senkrechten grauen Bereich links von der Anweisung klicken. Der Breakpoint wird als roter Kreis dargestellt.
Rechtsklicken Sie im linken Fensterausschnitt auf Debugger_Tutorial (GROUPO) und klicken Sie auf Von Interactive SQL aus ausführen.
Im rechten Fensterausschnitt von Sybase Central erscheint ein gelber Pfeil über dem Breakpoint.
Klicken Sie im Fensterausschnitt Debugger-Details auf die Registerkarte Lokal, um eine Liste von lokalen Variablen in der Prozedur mit ihren aktuellen Werten und Datentypen anzuzeigen. Die Variablen Top_Company, Top_Value, This_Value und This_Company sind alle uninitialisiert und daher gleich NULL.
Drücken Sie F11, um durch die Prozedur zu scrollen. Die Werte der Variablen ändern sich, wenn Sie die folgende Zeile erreichen:
IF SQLSTATE = error_not_found THEN |
Drücken Sie erneut zweimal 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.
An dieser Stelle werden Sie möglicherweise bemerken, dass der Grund für das Problem darin liegt, dass Top_Value nicht initialisiert wurde.
Prüfen Sie die Hypothese, dass das Problem durch die fehlende Initialisierung von Top_Value hervorgerufen wird, ohne den Code der Prozedur zu ändern.
Im Fenster Debugger-Details klicken Sie auf die Registerkarte Lokal.
Klicken Sie auf die Variable Top_Value, geben Sie 3000 in das Feld Wert ein und drücken Sie die Eingabetaste.
Drücken Sie F11 solange, bis das Feld Wert der Variablen This_Value größer als 3000 ist.
Klicken Sie auf den Breakpoint, sodass er grau wird.
Drücken Sie F5, um die Prozedur auszuführen.
Das Interactive SQL-Fenster wird angezeigt und zeigt die richtigen Ergebnisse:
top_company | top_value |
---|---|
Chadwicks | 8076 |
Schließen Sie alle offenen Fenster von Interactive SQL.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |