pourquoi je ne peux pas arrêter mon pl / sql programme au point d'arrêt que je mets en TOAD

StackOverflow https://stackoverflow.com/questions/1706163

  •  19-09-2019
  •  | 
  •  

Question

J'ai simple oracle procédure stockée PROC1 comme suit:

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

i utilise 11g oracle comme les commandes SQL suivant:

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, j'ai mis au point d'arrêt PROC1, puis je clique sur le bouton « exécuter le plsql avec le débogueur ». TOAD course PROC1 et afficher immédiatement le résultat. Il ne s'arrête pas à point d'arrêt. Je ne sais pas pourquoi. Quelqu'un a déjà couru sur ce problème? comment voulez-vous résoudre ce problème? Grand merci!

ps: j'utilise crapaud 9.7.2

Était-ce utile?

La solution

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

Si vous le mettez sur cela comme, il ne fonctionne pas (cette déclaration ne crée que la procédure, il 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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top