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.
Wählen Sie Modus » Debuggen.
Im rechten Fensterausschnitt doppelklicken Sie auf Debugger_Tutorial (GROUPO).
Im rechten Fensterausschnitt suchen Sie nach folgender Anweisung:
OPEN cursor_this_customer; |
Um einen Breakpoint hinzuzufügen, klicken Sie auf den senkrechten grauen Bereich links von der Anweisung. Der Breakpoint wird als roter Kreis dargestellt.
Im linken Fensterausschnitt rechtsklicken Sie auf Debugger_Tutorial (GROUPO) und wählen Aus Interactive SQL ausführen.
Auf der Registerkarte Verbindungen von Sybase Central wird ein gelber Pfeil eingeblendet, der den Breakpoint angibt.
Klicken Sie im Fensterausschnitt Debugger-Details auf die Registerkarte 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.
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 |
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.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |