perché non riesco a fermare il mio programma di pl / sql al punto di rottura, che ho impostato in ROSPO

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

  •  19-09-2019
  •  | 
  •  

Domanda

Ho una semplice stored procedure Oracle proc1 come segue:

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;

il proprietario di proc1 è SYS. sys dispongono di privilegi sufficienti per eseguire il debug proc1 come mostra il seguente comando SQL:

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

mi arriva il seguente risultato:

DEBUG CONNECT SESSION
DEBUG ANY PROCEDURE

i utilizzare Oracle 11g come i seguenti comandi SQL mostra:

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

le query superiori mi dà:

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,

e

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 ROSPO, ho impostato punto di interruzione proc1, poi fa clic sul pulsante "eseguire il plsql con debugger". ROSPO corsa proc1 e visualizzare il risultato immediatamente. Semplicemente non si ferma al punto di interruzione. Non so perché. Qualcuno mai incorrere in questo problema? come si fa a risolvere il problema? Grande grazie!

ps: io uso rospo 9.7.2

È stato utile?

Soluzione

Dove esattamente si fa a mettere il punto di interruzione? Spero che tu non mettere sulla linea CREATE PROCEDURE.

Se lo metti su quel tipo, non funziona (che istruzione crea solo la procedura, non esegue esso). Dovete chiamare proc1 da qualche parte e mettere il punto di interruzione sulla linea dove viene chiamato, in questo modo:

BEGIN
   proc1; -- place your breakpoint on this line
END;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top