2009-11-10 8 views
1

i ont une procédure stockée simple oracle PROC1 comme suit:pourquoi je ne peux pas arrêter mon pl/sql programme au point d'arrêt que je reproduis dans TOAD

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; 

le propriétaire de PROC1 est sys. sys ont assez de privilèges pour déboguer PROC1 que la commande SQL de suivi montre:

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

je vais obtenir le résultat suivant:

DEBUG CONNECT SESSION 
DEBUG ANY PROCEDURE 

j'utilise 11g Oracle comme les commandes SQL suivantes montre:

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

les requêtes supérieures me donne:

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, 

et

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 

dans TOAD, je mis au point d'arrêt PROC1, puis je clique sur le bouton « exécuter le plsql avec le débogueur ». TOAD lance proc1 et affiche le résultat immédiatement. Cela ne s'arrête pas au point d'arrêt. Je ne sais pas pourquoi. Est-ce que quelqu'un a déjà rencontré ce problème? comment le réparer? Grand merci!

ps: j'utilise crapaud 9.7.2

Répondre

1

Où exactement avez-vous mis votre point d'arrêt? J'espère que vous ne le mettez pas sur la ligne CREATE PROCEDURE.

Si vous le mettez comme ça, ça ne marche pas (cette instruction crée seulement la procédure, elle ne l'exécute pas). Vous devez appeler PROC1 de quelque part et de mettre le point d'arrêt sur la ligne où elle est appelée, comme ceci:

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

pas Burz, je sais crapaud pl/sql ediror ajoutera un point bleu à chaque ligne de votre programme stocké où vous pouvez (devriez) définir des points d'arrêt. Je viens de définir un point d'arrêt à *** temp: = 2 * i; ***. Merci. –