warum kann ich nicht meine PL / SQL-Programm bei Breakpoint stoppen, die ich in TOAD gesetzt
Frage
Ich habe eine einfache Oracle gespeicherte Prozedur proc1 wie folgt:
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;
der Besitzer proc1 ist sys. sys haben genug Privilegien wie die Folge SQL-Befehl zeigt debuggen proc1:
SELECT *
FROM session_privs
WHERE privilege LIKE '%DEBUG%';
ich werde folgendes Ergebnis:
DEBUG CONNECT SESSION
DEBUG ANY PROCEDURE
ich verwende Oracle 11g wie die folgenden SQL-Befehle zeigen:
SELECT * FROM v$database;
SELECT * FROM v$instance;
die oberen Anfragen gibt mir:
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,
und
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
in TOAD, habe ich einen Haltepunkt in proc1, klicken Sie dann auf die Schaltfläche i "die plsql mit Debugger ausführen". TOAD Lauf proc1 und das Ergebnis sofort angezeigt werden soll. Es funktioniert einfach nicht an Haltepunkt zu stoppen. Ich weiß nicht, warum. Hat jemand jemals in dieses Problem? wie Sie das Problem beheben? Großer Dank!
ps: ich benutze Kröte 9.7.2
Lösung
Wo genau setzen Sie Ihren Haltepunkt? Ich hoffe, Sie legen es nicht auf der CREATE PROCEDURE
Linie.
Wenn Sie es auf, das wie gesagt, es funktioniert nicht (die Anweisung erstellt nur das Verfahren, es ist es nicht ausführen). Sie haben proc1 rufen von irgendwo und setzen Sie den Haltepunkt auf der Linie, wo es genannt wird, wie folgt aus:
BEGIN
proc1; -- place your breakpoint on this line
END;