Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> dbms_debug
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
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) isBEGIN
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
![]() |
![]() |