oracle查询所有表的方法

数据库 Oracle
如果想要在oracle数据库中查询所有表和所有字段,应该如何实现呢?下文就教您一个实现该功能的方法,如果您感兴趣的话,不妨一看。

oracle查询所有表和所有数据的方法可能许多刚刚接触oracle数据库的新人都不太了解,下面就为您详细介绍oracle查询所有表的方法,供您参考。

  1. SELECT t.data_type  
  2. FROM user_tab_columns t  
  3. GROUP BY t.data_type;  
  4. -- Created on 2010-8-26 by RONGZHI_LI  
  5. DECLARE  
  6. CURSOR ot(namelike IN VARCHAR2)  
  7. IS  
  8. (SELECT owner AS uname,  
  9. object_name AS tname  
  10. FROM all_objects  
  11. WHERE object_type='TABLE' 
  12. AND owner LIKE namelike  
  13. );  
  14. CURSOR tc( username IN all_tab_columns.owner%TYPE, tablename IN all_tab_columns.table_name%type)  
  15. IS  
  16. (SELECT t.OWNER AS uname,  
  17. t.table_name  AS tab,  
  18. t.column_name AS col,  
  19. t.data_type data  
  20. FROM all_tab_columns t  
  21. WHERE t.owner    = username 
  22. AND t.table_name = tablename 
  23. );  
  24. sqlstr       VARCHAR2(200);  
  25. findsqlstr   VARCHAR2(200);  
  26. foundcount   NUMBER;  
  27. data_type    VARCHAR2(100):='';  
  28. logic_symbol VARCHAR2(10) :='=';  
  29. data_value   VARCHAR2(100);  
  30. --自行设定  
  31. name_like  VARCHAR2(100):='%HS_%';  
  32. find_type  VARCHAR2(100):='varchar2';--'varchar2';number  
  33. find_value VARCHAR2(100):='工行';  
  34. use_like   BOOLEAN      :=true;  
  35. BEGIN  
  36. data_type  :upper(find_type);  
  37. data_value :=find_value;--先给默认值 

--1.判断类型,是否为字符串

  1. IF data_type  = 'VARCHAR2' THEN        -- 对于字符串特别判定  
  2. data_value :''''||find_value||'''';--注意:pl/sql显示' '为''  
  3. END IF; 

--2.判断是否使用like 这个应该跟varchar2类型配合

  1. IF use_like THEN  
  2. logic_symbol:=' like ';  
  3. data_value  := '''%'||find_value||'%''';--注意:pl/sql显示' '为''  
  4. END IF;  
  5. --  
  6. FOR aot IN ot(name_like)  
  7. LOOP  
  8. FOR atc IN tc(aot.uname,aot.tname)  
  9. LOOP  
  10. foundcount :=0;  
  11. IF atc.DATA = data_type THEN  
  12. sqlstr   :'select count(*)  from '|| atc.uname ||'.' || atc.tab || ' where ' || atc.col  
  13. || logic_symbol || data_value;  
  14. --dbms_output.put_line(sqlstr);--debug用  
  15. EXECUTE immediate sqlstr INTO foundcount;  
  16. IF foundcount > 0 THEN  
  17. findsqlstr :'select *  from ' || atc.uname ||'.' || atc.tab || ' where ' || atc.col ||  
  18. logic_symbol || data_value||';--'||foundcount;  
  19. dbms_output.put_line(findsqlstr);  
  20. END IF;  
  21. END IF;  
  22. END LOOP;  
  23. END LOOP;  
  24. dbms_output.put_line('查找结束');  
  25. END; 

 

以上就是oracle查询所有表的方法介绍。

 

 

【编辑推荐】

Oracle存储过程的调试方法

带您了解Oracle物理结构

Oracle自动归档模式的设置

带您深入了解Oracle归档模式

ORACLE归档日志删除方法

责任编辑:段燃 来源: 互联网
相关推荐

2010-10-27 15:34:37

oracle查询

2009-05-21 09:24:42

表空间查询Oracle

2010-10-27 16:27:18

Oracle查询

2010-11-09 12:09:23

SQL Server查

2010-04-19 16:28:04

Oracle导出

2010-10-27 14:34:56

Oracle日志文件

2010-05-10 10:06:45

Oracle查询表名

2010-10-27 14:41:45

Oracle查询用户表

2010-11-16 11:17:41

Oracle表空间大小

2010-11-16 16:26:42

Oracle查询用户表

2010-04-12 16:24:15

Oracle表查询

2010-11-03 14:57:44

DB2备份所有表

2010-10-22 16:48:49

SQL删除所有表数据

2010-11-16 10:57:18

oracle创建视图

2010-09-14 15:51:15

sql遍历

2010-09-28 10:53:53

SQL表结构

2010-11-15 16:26:46

Oracle系统时间

2010-04-19 09:37:22

Oracle查询语句

2010-10-29 11:22:23

Oracle用户会话

2010-11-11 14:36:11

SQL Server系
点赞
收藏

51CTO技术栈公众号