jjpetrucelli
Programmer
what script can i use to provide a complete data dictionary?
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
select object_name from dba_objects
where owner = 'SYS' and object_type in ('TABLE','VIEW');
set echo off
set trimspool on
set linesize 100
set pagesize 0
set feedback off
spool TempDescDD.sql
prompt Set echo on
select 'desc sys.'||object_name
from dba_objects
where owner = 'SYS' and object_type in ('TABLE','VIEW')
order by object_name;
spool off
set feedback on
@TempDescDD
SQL> @stru
Enter table name: s_emp
Col Column Data Type [Constraint Type: Name: En-/Dis-abled]
# Name and Length and Enforcement
--- ------------------ ------------- -------------------------------------------
1 ID NUMBER(7) [CK:S_EMP_ID_NN:ENABLED] "ID" IS NOT NULL
[PK:S_EMP_ID_PK:ENABLED] NOT NULL/UNIQUE
2 LAST_NAME VARCHAR2(25) [CK:S_EMP_LAST_NAME_NN:ENABLED] "LAST_NAME"
IS NOT NULL
3 FIRST_NAME VARCHAR2(25)
4 USERID VARCHAR2(8) [UK:S_EMP_USERID_UK:ENABLED] UNIQUE
5 START_DATE DATE
6 COMMENTS VARCHAR2(255)
7 MANAGER_ID NUMBER(7) [FK:S_EMP_MANAGER_ID_FK:ENABLED] Match :
S_EMP_ID_PK
8 TITLE VARCHAR2(25) [FK:S_EMP_TITLE_FK:ENABLED] Match :
S_TITLE_TITLE_PK
9 DEPT_ID NUMBER(7) [FK:S_EMP_DEPT_ID_FK:ENABLED] Match :
S_DEPT_ID_PK
10 SALARY NUMBER(11,2)
Col Column Data Type [Constraint Type: Name: En-/Dis-abled]
# Name and Length and Enforcement
--- ------------------ ------------- -------------------------------------------
11 COMMISSION_PCT NUMBER(4,2) [CK:S_EMP_COMMISSION_PCT_CK:ENABLED]
commission_pct IN (10, 12.5, 15, 17.5, 20)
Another table (Y/N) ?
REM **********************************************************************************************
REM David L. Hunt (file author) distributes this and other
REM files/scripts for educational purposes only, to illustrate the
REM use or application of various computing techniques. Neither the
REM author nor Dasages-LLC makes any warranty regarding this
REM script's fitness for any industrial application or purpose nor is
REM there any claim that this or any similarly-distributed scripts
REM are error free or should be used for any purpose other than
REM illustration.
REM **********************************************************************************************
drop table temp_cons;
create table temp_cons as
select constraint_name, constraint_type, ' ' search_condition,
r_constraint_name, status
from user_constraints
where 1 = 2;
alter table temp_cons modify search_condition varchar(2000)
/
create or replace procedure prep_user_constraints (table_2_do in varchar)
is
cursor cons is
select constraint_name,constraint_type,
search_condition,r_constraint_name, status
from user_constraints
where table_name = upper(table_2_do);
my_search_condition varchar(32767);
begin
delete temp_cons;
commit;
for i in cons loop
my_search_condition := i.search_condition;
insert into temp_cons values
(i.constraint_name,i.constraint_type,
my_search_condition,i.r_constraint_name,i.status);
commit;
end loop;
end;
REM **************************************************************
REM David L. Hunt (file author) distributes this and other
REM files/scripts for educational purposes only, to illustrate the
REM use or application of various computing techniques. The author
REM makes no warranty regarding this script's fitness for any
REM industrial application or purpose nor is there any claim that
REM this or any similarly-distributed scripts are error free or
REM should be used for any purpose other than illustration.
REM **************************************************************
set echo off
set verify off
set feedback off
set linesize 80
set pagesize 23
break on "#" on a on b
accept x prompt "Enter table name: "
col a format a18 heading "Column|Name" word_wrapped
col b format a13 heading "Data Type|and Length"
col c format a43 heading "[Constraint Type: Name: En-/Dis-abled]|and Enforcement" word_wrapped
col "#" format 99 heading "Col| # "
exec prep_user_constraints('&x')
(select column_id "#",
col.column_name a,
col.data_type ||
decode(substr(data_type,1,4),
'DATE',null,
'LONG',null,
'VARC','('||ltrim(to_char(data_length,'9999'))||')',
'CHAR','('||ltrim(to_char(data_length,'999'))||')',
'NUMB','('||ltrim(to_char(data_precision,'99'))||
decode(data_scale,
0,null,
','||ltrim(to_char(data_scale,'999')))||')'
,null)
b,
'[' ||
decode(con.constraint_type,'P','PK','R','FK','C','CK','U','UK')
|| ':' ||con.constraint_name
|| ':' ||con.status
|| '] ' ||
decode(con.constraint_type,
'P','NOT NULL/UNIQUE',
'U','UNIQUE',
'C',con.search_condition,
'R','Match : '||r_constraint_name) c
from temp_cons con,
user_cons_columns con_col,
user_tab_columns col
where col.table_name = upper('&x')
and con.constraint_name = con_col.constraint_name
and col.table_name = con_col.table_name
and col.column_name = con_col.column_name
)
union
((select column_id "#",
col.column_name a,
col.data_type ||
decode(substr(data_type,1,4),
'DATE',null,
'LONG',null,
'VARC','('||ltrim(to_char(data_length,'9999'))||')',
'CHAR','('||ltrim(to_char(data_length,'999'))||')',
'NUMB','('||ltrim(to_char(data_precision,'99'))||
decode(data_scale,
0,null,
','||ltrim(to_char(data_scale,'999')))||')'
,null)
b,
' ' c
from user_tab_columns col
where col.table_name = upper('&x'))
minus
(select column_id "#",
col.column_name a,
col.data_type ||
decode(substr(data_type,1,4),
'DATE',null,
'LONG',null,
'VARC','('||ltrim(to_char(data_length,'9999'))||')',
'CHAR','('||ltrim(to_char(data_length,'999'))||')',
'NUMB','('||ltrim(to_char(data_precision,'99'))||
decode(data_scale,
0,null,
','||ltrim(to_char(data_scale,'999')))||')'
,null)
b,
' ' c
from user_tab_columns col, user_cons_columns con_col
where col.table_name = upper('&x')
and col.table_name = con_col.table_name
and col.column_name = con_col.column_name)
)
order by 1
/
accept again prompt "Another table (Y/N) ? "
set heading off
set pagesize 0
spool temp.sql
set termout off
select decode(upper('&again'),'Y','@stru') from dual;
set termout on
spool off
set heading on
set pagesize 23
set feedback on
@temp