RE: constraints question

From: Mercadante, Thomas F (LABOR) <"Mercadante,>
Date: Thu, 30 Apr 2009 16:06:15 -0400
Message-ID: <ABB9D76E187C5146AB5683F5A07336FF023CA676_at_EXCNYSM0A1AJ.nysemail.nyenet>



Eugene,  

How about this:  

declare

l_pk_name varchar2(100);

in_number number := 1;  

--===========================================
 

function get_pk_name(in_table_name in varchar2) return varchar2 is

ret_str varchar2(100);

begin

  select constraint_name

  into ret_str

  from user_constraints

  where table_name=in_table_name

  and constraint_type='P';

  return ret_str;

  exception

    when others then

               return '';

end;  

--===========================================
 

procedure get_cs_name(in_pk_name in varchar2,in_number in out number) is

l_pk_name varchar2(100);

l_number NUMBER := in_number;

l_in_number number := 0;

begin

            for c in (select table_name, constraint_name

               from user_constraints

              where r_constraint_name= in_pk_name

                order by table_name) loop

        dbms_output.put_line(lpad('>',l_number*2) || ' ' ||
c.table_name); -- || ' ' || c.constraint_name);

        l_pk_name := get_pk_name(c.table_name);

        if l_pk_name is not null

        and l_pk_name <> in_pk_name then

           null;

           l_in_number := in_number + 1;

           get_cs_name(l_pk_name,l_in_number);

        end if;

    end loop;

  • l_number := l_number + 1;

end;  

--===========================================
 

begin

  for c in (select table_name from user_tables order by 1) loop

     dbms_output.put_line(c.table_name);

     l_pk_name := get_pk_name(c.table_name);

     get_cs_name(l_pk_name,in_number);

     dbms_output.put_line ('================================');

  end loop;

end;

/  

Tom

--

http://www.freelists.org/webpage/oracle-l Received on Thu Apr 30 2009 - 15:06:15 CDT

Original text of this message