【问题标题】:why i can't stop my pl/sql program at breakpoint which i set in TOAD为什么我不能在我在 TOAD 中设置的断点处停止我的 pl/sql 程序
【发布时间】:2010-12-14 22:30:39
【问题描述】:

我有一个简单的oracle存储过程proc1如下:

CREATE OR REPLACE PROCEDURE SYS.proc1
IS
   total   NUMBER := 0;
   temp    INTEGER := 0;
BEGIN
   FOR i IN 1 .. 5
   LOOP
      temp := 2 * i;
      total := total + temp;
   END LOOP;

   DBMS_OUTPUT.put_line (total);
END;

proc1 的所有者是 sys。 sys 有足够的权限来调试 proc1,如下 sql 命令所示:

SELECT *
  FROM session_privs
 WHERE privilege LIKE '%DEBUG%';

我会得到以下结果:

DEBUG CONNECT SESSION
DEBUG ANY PROCEDURE

我使用oracle 11g,如下sql命令所示:

SELECT * FROM v$database;
SELECT * FROM v$instance;

上面的查询给了我:

1223277241,ORCL,8/21/2009 5:28:25 PM,886308,8/21/2009 5:28:28 PM,1,10/15/2007 10:08:59 AM,NOARCHIVELOG,3510666,3399439,CURRENT,8/21/2009 5:28:26 PM,10008,3536169,11/10/2009 3:16:51 PM,NOT ALLOWED,8/21/2009 5:28:25 PM,READ WRITE,MAXIMUM PERFORMANCE,UNPROTECTED,ENABLED,1223308473,1223308473,PRIMARY,886308,DISABLED,SESSIONS ACTIVE,DISABLED,NONE,NO,NO,NO,NO,7,Microsoft Windows IA (32-bit),2,2,3536339,NO,NO,NO,orcl,0,DISABLED,,0,,,NO,,NO,

1,orcl,WD00070136,11.1.0.6.0,11/9/2009 11:04:29 AM,OPEN,NO,1,STOPPED,,ALLOWED,NO,ACTIVE,PRIMARY_INSTANCE,NORMAL,NO

在 TOAD 中,我在 proc1 处设置断点,然后单击“使用调试器执行 plsql”按钮。 TOAD 运行 proc1 并立即显示结果。它只是不会在断点处停止。我不知道为什么。有人遇到过这个问题吗?你如何解决它?非常感谢!

ps:我用的是蟾蜍 9.7.2

【问题讨论】:

    标签: debugging plsql toad


    【解决方案1】:

    你到底把你的断点放在哪里?我希望你不要把它放在CREATE PROCEDURE 行。

    如果你把它放在那个上面,它就不起作用(那个语句只创建过程,它不执行它)。您必须从某个地方调用 proc1 并将断点放在调用它的行上,如下所示:

    BEGIN
       proc1; -- place your breakpoint on this line
    END;
    

    【讨论】:

    • no Burz,我知道 toad pl/sql ediror 会在存储程序的每一行添加一个蓝点,您可以(应该)设置断点。我只是在 temp := 2 * i; 处设置了一个断点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2020-08-31
    • 2017-04-05
    • 2019-01-23
    • 2022-01-11
    相关资源
    最近更新 更多