select a.TABLE_NAME as "TableName", case when (select count(*) from user_views v where v.VIEW_NAME =a.TABLE_NAME )>0 then ‘V‘ else ‘U‘end as "TableType", a.COLUMN_NAME as "ColumnName", A.COLUMN_ID as "ColumnIndex", a.DATA_TYPE as "DataType", case when a.DATA_TYPE = ‘NUMBER‘ then case when a.Data_Precision is null then a.Data_Length else a.Data_Precision end else a.Data_Length end as "Length", case when a.nullable = ‘N‘ then ‘0‘ else ‘1‘ end as "IsNullable", b.comments as "Description", case when (select count(*) from user_cons_columns c where c.table_name=a.TABLE_NAME and c.column_name=a.COLUMN_NAME and c.constraint_name= (select d.constraint_name from user_constraints d where d.table_name=c.table_name and d.constraint_type =‘P‘) )>0 then ‘1‘ else ‘0‘end as "IsPK" from USER_TAB_COLS a, sys.user_col_comments b where a.table_name = b.table_name and b.COLUMN_NAME = a.COLUMN_NAME order by a.TABLE_NAME, a.COLUMN_ID