1 问题
使用 user_tab_columns 视图查询 Oracle 数据库指定用户实例下的所有表结构信息,但是发现有些表字段顺序和数据库中的表字段顺序不一致,而业务需求上是要求一致的。
当前数据库用户的表结构是从另一机器上备份导入的,然后用该视图去原数据库用户下查询相应的表,原库下查询的结果和数据库中表字段顺序一致。
2 解决方法
加上 column_id 升序排列就可以保证与原表字段顺序一致:
SELECT A.table_name 表名, A.column_name 字段名, A.data_type 数据类型, A.data_length 数据长度, A.DATA_PRECISION 精度
FROM USER_TAB_COLUMNS A
where table_name = 'STD_YYS_HDXX' ORDER BY column_id asc;
注:
DATA_PRECISION 是 NUMBER 类型字段的长度,如果表字段为 NUMBER 类型,则有值,否则DATA_PRECISION为空。
另外从该视图查出的 NUMBER 类型的 data_length 值全部为 22,如果要确定 NUMBER 类型字段的长度,则需取 DATA_PRECISION 的值。