I have a query thta does exactly what I need it to do. It was created by
someone far more experienced that I (read I don't understand it) 

It includes some column formating comands (an Oracle feature) which +apera_
to be critical to it's working corectly. If I am not mistaken these are
only efective for a given "session", so here's the question, if I do an
execute() with these before I execute  the query will they still be in
effect?

Here is the query BTW:


----------

1. My previous scripts list ALL FOREIGN KEY columns, not PK cols.
2. It works no matter how many FKs a table has.
3. I simplified a little bit, it gives out all the info for sys schema
in less than 1 sec.
4. To list the PK cols, you only need to do slightly modification (see
below).
5. For DBA, I still think the 2nd one is much, much userful.

Here is the output:

Enter the table name check for foreign key: bonus

FK Column Name       PK Table Name             PK Column Name
-------------------- ------------------------- --------------------
DEPTNO               DEPT                      DEPTNO
EMP_NAME, EMP_ID     EMP                       ENAME, EMPNO

___________________________

Script for single table
___________________________

set verify off linesize 100
ACCEPT tab_n PROMPT 'Enter the table name check for foreign key: '

col "PK Table Name" format a25
col "FK Column Name" format a20 word_wrapped
col "PK Column Name" format a20 word_wrapped

select u.columns "FK Column Name", x.table_name "PK Table Name",
x.columns "PK Column Name"

from
(select a.constraint_name, a.r_constraint_name,
             max(decode(position, 1,    
substr(column_name,1,30),NULL)) ||
             max(decode(position, 2,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 3,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 4,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 5,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 6,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 7,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 8,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 9,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,10,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,11,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,12,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,13,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,14,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,15,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,16,',
'||substr(column_name,1,30),NULL)) columns
from user_cons_columns b, user_constraints a
where a.table_name = UPPER('&tab_n') and
a.constraint_name = b.constraint_name
and a.constraint_type = 'R'
group by a.constraint_name,a.r_constraint_name) u,
(select a.table_name, a.constraint_name,
             max(decode(position, 1,    
substr(column_name,1,30),NULL)) ||
             max(decode(position, 2,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 3,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 4,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 5,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 6,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 7,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 8,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position, 9,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,10,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,11,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,12,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,13,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,14,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,15,',
'||substr(column_name,1,30),NULL)) ||
             max(decode(position,16,',
'||substr(column_name,1,30),NULL)) columns
from user_cons_columns b, user_constraints a
where 
b.constraint_name = a.constraint_name
and a.constraint_type = 'P'
group by a.table_name, a.constraint_name) x
where u.r_constraint_name=x.constraint_name
/


-- 
Stan Brown     [EMAIL PROTECTED]                                    843-745-3154
Charleston SC.
-- 
Windows 98: n.
        useless extension to a minor patch release for 32-bit extensions and
        a graphical shell for a 16-bit patch to an 8-bit operating system
        originally coded for a 4-bit microprocessor, written by a 2-bit 
        company that can't stand for 1 bit of competition.
-
(c) 2000 Stan Brown.  Redistribution via the Microsoft Network is prohibited.

Reply via email to