create or replace procedure p (v_pid article.pid%type, v_level binary_integer) is
cursor c is select * from article where pid = v_pid;
v_preStr varchar2(1024) := '';
begin
for i in 1..v_level loop
v_preStr := v_preStr || '****';
end loop;
for v_article in c loop
dbms_output.put_line(v_preStr || v_article.cont);
if(v_article.isleaf = 0) then
p (v_article.id, v_level + 1);
end if;
end loop;
end;
--展现emp表的树状结构
create or replace procedure p
(v_empno emp.empno%type, v_grade binary_integer)
is
cursor c is
select * from emp where mgr = v_empno;
v_preStr varchar2(4000) := '';
v_i binary_integer := 0;
begin
while v_i < v_grade loop
v_preStr := v_preStr || '****';
v_i := v_i + 1;
end loop;
for v_emp in c loop
dbms_output.put_line(v_preStr || v_emp.ename);
p(v_emp.empno, v_grade + 1);
end loop;
end;
declare
v_emp emp%rowtype;
begin
select * into v_emp from emp where mgr is null;
dbms_output.put_line(v_emp.ename);
p(v_emp.empno, 1);
end;