我有一个简单的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”按钮。蟾蜍运行PROC1并立即显示结果。它只是没有在断点处停止。我不知道为什么。有谁曾经遇到这个问题?你怎么解决?十分感谢!

PS:我使用蟾9.7.2

有帮助吗?

解决方案

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

如果你把它放在像,这是行不通的(这句话只创建过程,它不执行的话)。你必须从某处调用PROC1并把断点在那里它被称为行了,像这样的:

BEGIN
   proc1; -- place your breakpoint on this line
END;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top