почему я не могу остановить свою программу pl / sql на точке останова, которую я установил в TOAD - PullRequest
1 голос
/ 10 ноября 2009

У меня есть простая хранимая процедура оракула 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 и сразу же отобразить результат. Это просто не останавливается на точке останова. Я не знаю почему. Кто-нибудь когда-нибудь сталкивался с этой проблемой? как ты это исправляешь? Большое спасибо!

пс: я использую жабу 9.7.2

1 Ответ

1 голос
/ 11 ноября 2009

Где именно вы ставите точку останова? Надеюсь, вы не поместите его в строку CREATE PROCEDURE.

Если вы поместите его на это, он не будет работать (этот оператор только создает процедуру, но не выполняет ее). Вы должны вызвать proc1 откуда-то и поместить точку останова в строку, где она вызывается, например:

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