почему я не могу остановить свою программу pl/sql в точке останова, которую я установил в TOAD
Вопрос
у меня есть простая хранимая процедура 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 и немедленно отобразите результат.Он просто не останавливается на точке останова.Я не знаю, почему.Кто-нибудь когда-нибудь сталкивался с этой проблемой?как ты это исправишь?Большое спасибо!
пс:я использую жабу 9.7.2
Решение
Где именно вы ставите точку останова?Надеюсь, ты не кладешь это на CREATE PROCEDURE
линия.
Если вы поместите его так, он не будет работать (этот оператор только создает процедуру, но не выполняет ее).Вам нужно откуда-то вызвать proc1 и поставить точку останова на строке, где он вызывается, вот так:
BEGIN
proc1; -- place your breakpoint on this line
END;