不知道你是写程序用,还是找数据用。写程序的话,一步到位,可能比较复杂! 下面附一点找数据的较笨的方法!看对你有没有用,以用户SCOTT为例: 1.dba_tab_columns有某个用户的所以表和列等信息:select table_name,column_name from dba_tab_columns where owner='SCOTT' 2.查看用户的表所使用的数据类型有哪些:select distinct Data_type from (select * from dba_tab_columns where owner='SCOTT') A 通过查看,就可以知道,文本型有哪些?如:是否有char, varchar2等 3.创建一个表,用于保留那些表名和字段:CREATE TABLE SCOTT.TCOL(A VARCHAR2(50), B VARCHAR2(50)) 4.因为SCOTT用户的字段类型较少,下面以找NUMBER类型值为1100的表名与字段在SQLPLUS下运行如下代码(如果数值多的话,可以用 in('NUMBER',...)格式。
set serveroutput on delete from scott.TCOL; commit;
declare cursor my_cursor is select table_name,column_name from dba_tab_columns where owner='SCOTT' and DATA_TYPE='NUMBER'; v_table varchar2(50); v_col varchar2(50); v_sql varchar2(4000); begin open my_cursor; loop fetch my_cursor into v_table,v_col; dbms_output.put_line(v_table); exit when my_cursor%NOTFOUND; v_sql:='Insert into SCOTT.TCOL(A,B) select '||''''|| v_table||''''||','||''''|| v_col||''''||' from SCOTT.'||v_table||' where '||v_col||'=1100'; dbms_output.put_line(v_sql); EXECUTE IMMEDIATE v_sql; commit; end loop; close my_cursor; end;
5.最后执行select * from scott.tcol,就可以看到结果! 如果有用,自己再整理成一个存储过程.