Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> dbms_debug

dbms_debug

From: Vitek <victor_at_percombank.kiev.ua>
Date: Thu, 20 Jan 2000 16:44:26 +0200
Message-ID: <B4188A518787D311BE9700805FE4372712C161@Manticore.pcb>

i try to debug my pl_sql code using dbms_debug package  (i have oracle 8.1.5)

problem : i coud not receive values of varibles

 i do :

connect ...

SET SERVEROUTPUT ON;
ALTER SESSION SET PLSQL_DEBUG = true;

/*test proc i want to debug*/

CREATE OR REPLACE PROCEDURE TEST1(I INTEGER) AS J INTEGER;
BEGIN
 DBMS_OUTPUT.PUT_LINE('TEST('||I||')');  IF I<>0 THEN
  J:=1+I;
  TEST1(0);
 END IF;
END;
/

/*package only replace dbms_debug*/

CREATE OR REPLACE PACKAGE DEB AS
/*TARGET*/

FUNCTION INIT RETURN VARCHAR2;
PROCEDURE DEBUG_ON ;
PROCEDURE DEBUG_OFF ;

procedure EXECUTE(what         IN VARCHAR2,
       bind_results IN BINARY_INTEGER,
                  errm         IN OUT NOCOPY VARCHAR2);

/*ATTACH*/

PROCEDURE ATTACH(SESS VARCHAR2);
PROCEDURE DETACH; FUNCTION SYNCHRONIZE RETURN VARCHAR2;
FUNCTION CONTINUE RETURN VARCHAR2;
END DEB; CREATE OR REPLACE PACKAGE BODY DEB AS
DATA_NOT_FOUND EXCEPTION;
PRAGMA EXCEPTION_INIT (DATA_NOT_FOUND,+100); coll sys.dbms_debug_vc2coll; -- results R_INFO DBMS_DEBUG.RUNTIME_INFO; -- CURRENT RUNTIME_INFO



FUNCTION INIT RETURN VARCHAR2 IS
BEGIN
 RETURN DBMS_DEBUG.INITIALIZE(NULL,1);
END; PROCEDURE DEBUG_ON IS
BEGIN
 DBMS_DEBUG.DEBUG_ON(TRUE,FALSE);
END; PROCEDURE DEBUG_OFF IS
BEGIN
 DBMS_DEBUG.DEBUG_OFF;
END;

PROCEDURE ATTACH(SESS VARCHAR2) IS
BEGIN
 DBMS_DEBUG.ATTACH_SESSION(SESS,1);
END; PROCEDURE DETACH IS
BEGIN
 DBMS_DEBUG.DETACH_SESSION;
END; FUNCTION SYNCHRONIZE RETURN VARCHAR2 IS BEGIN
 RETURN DBMS_DEBUG.SYNCHRONIZE(R_INFO); END; FUNCTION CONTINUE RETURN VARCHAR2 IS
BEGIN
 RETURN
DBMS_DEBUG.CONTINUE(R_INFO,dbms_debug.break_next_line+dbms_debug.break_any_c all);
END;

procedure EXECUTE(what         IN VARCHAR2,
       bind_results IN BINARY_INTEGER,
                  errm         IN OUT NOCOPY VARCHAR2) is
BEGIN
 dbms_debug.execute(WHAT,-1,bind_results,coll,errm); END;
END DEB;

t:
  SET SERVEROUTPUT ON;
  EXECUTE DBMS_OUTPUT.PUT_LINE(DEB.INIT);    result '12a000001'
a:
  EXECUTE DBMS_DEBUG.ATTACH_SESSION('12a000001');  t:
   EXECUTE DEB.DEBUG_ON;
a:
  EXECUTE DBMS_OUTPUT.PUT_LINE(DEB.SYNCHRONIZE);    result 0 ('ok')

DECLARE
D VARCHAR2(100);
BEGIN
DEB.EXECUTE('begin TEST1(1); end;',0,D); DBMS_OUTPUT.PUT_LINE(D);
END; EXECUTE DBMS_OUTPUT.PUT_LINE(DEB.CONTINUE);    result 0 ('ok')

DECLARE
V VARCHAR2(100);
I INTEGER;
BEGIN
I:=DBMS_DEBUG.GET_VALUE ('I',0,v);
DBMS_OUTPUT.PUT_LINE('VAL='||V);
DBMS_OUTPUT.PUT_LINE(I);
END;
result
 VAL=
  2 (debuginfo missing)

EXECUTE DBMS_OUTPUT.PUT_LINE(DEB.CONTINUE); EXECUTE DBMS_OUTPUT.PUT_LINE(DEB.CONTINUE); T:
 RESULT
 TEST(1)
 TEST(0)
(PROC WORKS) WHATS WRONG ?
--
с приветом
     витек --
с приветом
     витек Received on Thu Jan 20 2000 - 08:44:26 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US