您的位置:首页 > 数据库 > Oracle

几种获取oracle用户表字段信息的方法

2009-09-03 17:58 507 查看
oracle提供了很多有用的子典表来保存表的基本信息,因为在一个项目中要用到动态获取指定表所有字段信息,所以在网上搜集了一下这几种方法:

 

首先创建一个用来测试的表,结构如下:

 

create table testTable(
userid integer,
username varchar2(20),
time_stamp date
)

 

第一种方法: 查询dba_tab_columns

 

select COLUMN_NAME,DATA_TYPE,DATA_LENGTH 
from   dba_tab_columns
where  table_name =upper('testTable')
order by COLUMN_NAME

 

执行结果: 

COLUMN_NAME    DATA_TYPE   DATA_LENGTH
--------------          -----------        -----------
TIME_STAMP        DATE               7
USERID                NUMBER          22
USERNAME           VARCHAR2      20

这种方法需要有DBA权限

 

 

第二种方法: 查询user_tab_cols

select  COLUMN_NAME,DATA_TYPE,DATA_LENGTH 
from  user_tab_cols 
where table_name=upper('testTable')

order by COLUMN_NAME

 

执行结果:

COLUMN_NAME    DATA_TYPE   DATA_LENGTH
--------------          -----------        -----------
TIME_STAMP        DATE               7
USERID                NUMBER          22
USERNAME           VARCHAR2      20

这种方法只能查找当前用户下的表

 

 

第三种方法: 查询ALL_TAB_COLUMNS

select distinct COLUMN_NAME,DATA_TYPE,DATA_LENGTH
from ALL_TAB_COLUMNS
WHERE TABLE_NAME= upper('testTable')
 

执行结果:

COLUMN_NAME    DATA_TYPE   DATA_LENGTH
--------------          -----------        -----------
TIME_STAMP        DATE               7
USERID                NUMBER          22
USERNAME           VARCHAR2      20

这种方法可以查询所有用户下的表

 

oracle 在存储这些表的信息时,会把表名转换成大写方式,因此在条件中用upper()函数把表名字符转成大写方式

 

随然以上3中方法都可以查出指定表的字段基本信息(还有其他的更多信息),可以根据自己的需要灵活选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息