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

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 存储过程和触发器 » 调试过程、函数、触发器和事件 » 教程:调试程序入门 » 第 2 课:调试存储过程

 

诊断错误

要诊断过程中的错误,请在过程中设置断点并单步执行代码,同时在执行过程时监视变量的值。

下面,您要在过程中的第一个可执行语句处设置断点。

 ♦  诊断错误
  1. 选择 [模式] » [调试]。

  2. 在右窗格中,双击 [Debugger_Tutorial (GROUPO)]。

  3. 在右窗格中,定位以下语句:

    OPEN cursor_this_customer;
  4. 要添加断点,单击语句左侧灰色竖区。断点会显示为红色圆圈。

  5. 在左窗格中,右击 [Debugger_Tutorial (GROUPO)],选择 [从 Interactive SQL 执行]。

    在 Sybase Central 的 [连接] 选项卡中,将出现一个表示断点的黄色箭头。

  6. 在 [调试程序详细信息] 窗口中,单击 [局部] 选项卡,以显示该过程中的局部变量的列表以及这些变量的当前值和数据类型。top_company、top_value、this_value 和 this_company 变量均未初始化,因此为 NULL。

  7. 按 F11 键以滚动浏览该过程。当您到达下面这一行时,变量的值会改变:

    IF this_value > top_value THEN
  8. 再一次按 F11 键,确定执行采用了哪个分支。黄色箭头移回到下面的文本处:

    customer_loop: loop

    IF 测试未返回 true。该测试之所以会失败,是因为任何值与 NULL 的比较都返回 NULL。值为 NULL 会导致测试失败并且不执行 IF...END IF 语句中的代码。

    此时,您可能会意识到问题在于 top_value 未初始化这一事实上。