SET LINESIZE 200
SET PAGESIZE 50000
COLUMN column_name FORMAT A30
COLUMN data_type FORMAT A30
SELECT
column_name,
data_type ||
(CASE
WHEN data_type IN ('VARCHAR2', 'CHAR', 'NVARCHAR2', 'NCHAR') THEN '(' || data_length || ')'
WHEN data_type IN ('NUMBER') THEN
(CASE
WHEN data_precision IS NOT NULL AND data_scale IS NOT NULL THEN '(' || data_precision || ',' || data_scale || ')'
WHEN data_precision IS NOT NULL AND data_scale IS NULL THEN '(' || data_precision || ')'
ELSE ''
END)
ELSE ''
END) AS data_type
FROM
all_tab_columns
WHERE
owner = UPPER('your_schema_name') AND
table_name = UPPER('your_table_name')
ORDER BY
column_id;
SET SERVEROUTPUT ON
DECLARE
v_owner VARCHAR2(100);
BEGIN
FOR cur IN (SELECT username FROM all_users WHERE username NOT IN ('SYS', 'SYSTEM'))
LOOP
v_owner := cur.username;
-- Output schema name
DBMS_OUTPUT.PUT_LINE('Schema: ' || v_owner);
-- Retrieve table information
FOR tbl IN (SELECT table_name FROM all_tables WHERE owner = v_owner)
LOOP
-- Output table name
DBMS_OUTPUT.PUT_LINE('Table: ' || tbl.table_name);
-- Output column headers
DBMS_OUTPUT.PUT_LINE('Column Name' || CHR(9) || 'Data Type');
-- Retrieve column information
FOR col IN (SELECT column_name, data_type FROM all_tab_columns WHERE owner = v_owner AND table_name = tbl.table_name)
LOOP
-- Output column information
DBMS_OUTPUT.PUT_LINE(col.column_name || CHR(9) || col.data_type);
END LOOP;
-- Output object privileges
DBMS_OUTPUT.PUT_LINE('Object Privileges:');
FOR priv IN (SELECT privilege FROM all_tab_privs WHERE owner = v_owner AND table_name = tbl.table_name)
LOOP
-- Output privilege information
DBMS_OUTPUT.PUT_LINE('- ' || priv.privilege);
END LOOP;
-- Output column privileges
DBMS_OUTPUT.PUT_LINE('Column Privileges:');
FOR col_priv IN (SELECT grantee, privilege, column_name FROM all_col_privs WHERE owner = v_owner AND table_name = tbl.table_name)
LOOP
-- Output column privilege information
DBMS_OUTPUT.PUT_LINE('- Grantee=' || col_priv.grantee || ', Privilege=' || col_priv.privilege || ', Column=' || col_priv.column_name);
END LOOP;
DBMS_OUTPUT.PUT_LINE('');
END LOOP;
DBMS_OUTPUT.PUT_LINE('');
END LOOP;
END;
/