プロシージャのバグを診断するために、プロシージャにブレークポイントを設定して、コードをステップ・スルーし、プロシージャの実行とともに変化する変数の値を監視します。
ここでは、プロシージャ内の最初の実行可能な文にブレークポイントを設定します。
[モード] - [デバッグ] を選択します。
右ウィンドウ枠で、[Debugger_Tutorial (GROUPO)] をダブルクリックします。
右ウィンドウ枠で、次の文を検索します。
OPEN cursor_this_customer; |
ブレークポイントを追加するには、左側にあるグレーの縦線の領域をクリックします。ブレークポイントは、赤い円で表示されます。
左ウィンドウ枠で、[Debugger_Tutorial (GROUPO)] を右クリックし、[Interactive SQL から実行] を選択します。
Sybase Central の [接続] タブに、ブレークポイントを示す黄色の矢印が表示されます。
[デバッガの詳細] ウィンドウで [ローカル] タブをクリックし、プロシージャ内のローカル変数とその現在の値とデータ型のリストを表示します。変数 top_company、top_value、this_value、this_company は、いずれも初期化されていないため NULL です。
[F11] キーを押して、プロシージャをスクロールします。次の行に到達すると、変数の値が変化します。
IF this_value > top_value THEN |
[F11] キーをもう一度押して、分岐を確認します。黄色の矢印が、次のテキストに戻ります。
customer_loop: loop |
IF
テストは TRUE を返しませんでした。テストが失敗したのは、NULL とどのような値を比較しても NULL が返されるためです。NULL 値によりテストは失敗し、IF
...END IF
文内のコードは実行されませんでした。
このことから、top_value が初期化されていないことが原因とわかります。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |