this post is just generalisation of already posted procedure to create catalog from implemented database tables
…. Posted procedure inspect only one attribute (VRSTA) but I have found out later that there are valuable information stored in other attributes... Attribute names, description and domain were unknown. This time I had to make list of attributes and values in spatial tables so that I can easily decide based on attribute value what attributes might be interesting to customers so that I can include it in reporting or as info click functionality of web GIS application... yes, I know … the one should know in advance what attributes to include in application or report, unfortunately this is not my case :-) … based on report produced by posted PL/SQL procedure I just have to guess …
After you review report (created by posted procedure) you might find number of columns with garbage data. Just remove it using this SQL statement:
alter table table_name drop column column_name;to drop multiple columns you can use:
alter table table_name drop (column_name1,column_name2);
… have fun!
declare cursor c_tablice is select table_name t_name, column_name c_name from all_tab_cols where owner = 'PPSV' and data_type_owner is null -- to skip object types such as sdo_geometry and table_name not like '%$%' -- to skip system values and column_name not like '%$%' -- to skip system values and column_name not like 'ID%'; -- to skip fields named ID% /* in my case all fields that follows pattern ID% are automatically generated (sequence) and they are not interesting for catalog; you can exclude some additional fields using the same principle */ type vrsta_type is ref cursor; c_vrsta vrsta_type; vrsta varchar2(1000); v_sql varchar2(1000); begin for r_tablice in c_tablice loop dbms_output.put_line('> TABLE: '||r_tablice.t_name); v_sql := 'select distinct(' || r_tablice.c_name || ' ) d_vrsta from '|| r_tablice.t_name; open c_vrsta for v_sql ; loop fetch c_vrsta into vrsta ; exit when c_vrsta%NOTFOUND; dbms_output.put_line(r_tablice.c_name || ': '|| vrsta); end loop; dbms_output.put_line(''); close c_vrsta; end loop; end; /
No comments:
Post a Comment