oracle能否遍历数据库里所有表的字段与值

在下的一个用户里面有300多张表,我想输入一个值后,就显示此值所在的表名与字段名,请问能否实现,怎么实现?
谢谢
你好,我是想一次就查询所有的表的表名与字段。

不知道你是写程序用,还是找数据用。写程序的话,一步到位,可能比较复杂!
下面附一点找数据的较笨的方法!看对你有没有用,以用户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,就可以看到结果! 如果有用,自己再整理成一个存储过程.

以上仅参考!
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-25
你数据多
要想查全
实在不行
就一次查1w个
多查几次
还是慢就只能等了
结果集处理
那要问你了
你把他调出来
干什么
你就干什么呗
推荐放在excel里面
第2个回答  2009-05-08
desc 表名

oracle能否遍历数据库里所有表的字段与值
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...

如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串...
这个不可能使用简单一个查询语句来实现这个功能。因为你的这个需要基本都是比一定逻辑的查询,实现起来有相当的难度。因为首先要确定有多少张表,每张表中有多少个字段,然后才能实现某个字段中的某条记录包含你所需要的这个特定的值。这仅仅是一个简单的思路,供参考。

如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串...
写一个存储过程\\x0d\\x0a将showtables的结果放入一个集合中\\x0d\\x0a然后遍历这个集合\\x0d\\x0adesctable\\x0d\\x0a得到单个表的字段\\x0d\\x0a然后组织查询语句select*fromtablewhere字段1=‘cc’or字段2=’cc‘...字段n='cc'\\x0d\\x0a\\x0d\\x0a运行脚本看结果\\x0d\\x0a这只是思路...

oracle中如何根据表中一个字段遍历数据
写个for循环就可以遍历一遍,例如meminfo 表中有member_id 你现在有的id需要在meminfo 中查询出现次数 declare i number(5);id number(15);begin for rec in(select member_id from meminfo) loop if member_id=&id then i:=i+1;end if;end;这样就会遍历一遍你的这个数据库 ...

ORACLE中如何用DBMS_OUTPUT包输出表的所有数据
DBMS_OUTPU.PUT_LINE是PL\/SQL语言的输出语句。如果要想输出表中所有数据,要通过游标循环读逐条读出和输出。下面是一个简单例子:BEGIN FOR rec IN (SELECT * FROM emp) LOOP dbms_output.put_line(rec.empno||rec.ename);END LOOP;END;...

Oracle数据库中,知道一个值,如何查询它所在的表,是哪个字段?
--oracle无穷解查询数据库中的所有数据 --TEST0418为表属于的用户(不知道哪个用户,可以用语句查已知表名,--表所属的用户--可百度)--1001E71000000002RWGW :为所查询的内容,也可改为模糊查询 DECLARE V_SQL VARCHAR2(2000);V_COUNT NUMBER;BEGIN FOR XX IN (SELECT TABLE_NAME,COLUMN_NAME...

如何根据值查找所在的表和字段
数据字典的查找方法见本人另一篇日志 SqlServer2005数据库字典通过遍历轮询数据库中所有的表的所有符合字段,查出该表的该字段是否存在数据值。即通过数据库中的数据字典,构造轮询查找所有表所有字段的语句,得出是否存在对应数值。最后形式为很多个SELECT 语句,都进行查询。解决方法思路明确后,就能往下进行了...

在oracle中怎么对一张表中的列进行循环,比如说,我执行第一个字段,再...
要对表中的字段进行遍历吗? 用user_tab_cols begin for i in (select column_name from user_tab_cols where table_name=upper('表名'))loop dbms_output.put_line(i.column_name);end loop;end;

怎么一行一行的遍历数据库中的所有行
使用【游标】可以辅助实现一行一行地遍历某个数据库表中的所有行。例如在Oracle数据库中:declare sname varchar2( 20); --声明变量 cursor student_cursor is select sname from student ; --声明指向表student的【游标】begin open student_cursor;--打开游标 fetch student_cursor into sname ;--...

oracle如何实现遍历查询?
if t_name%found---开始遍历有值时插入以下数据 then select name,count(*) into new_table from table_teacher_student where name=teacher_name group by name---将一个老师名字依据条件插入新表数据 else dmbs_output.put_line(‘完成所有工作’);---遍历结束时输出完成工作 exit;end if;...

相似回答