`
czwlucky
  • 浏览: 48858 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

查询ORACLE字段信息

阅读更多

先创建一张测试表:

CREATE TABLE ABC(
       A NUMBER, 
       B NUMBER(22,8), 
       C NUMBER(8), 
       D NUMBER(22), 
       E NUMBER(38), 
       F INTEGER, 
       G DATE, 
       BL BLOB, 
       CL CLOB,
       VAR VARCHAR2(30), 
       CHR CHAR, 
       VCHR VARCHAR(20),
       NVCHR NVARCHAR2(33), 
       NCHR NCHAR(3),
       TMP TIMESTAMP,
       TMP2 TIMESTAMP(8),
       BF BFILE,
       R RAW(800),
       --L LONG,
       LR LONG RAW,
       FL FLOAT,
       FL2 FLOAT(36),
       FL3 FLOAT(126),
       DE DECIMAL,
       DD DECIMAL(8,3)
       );

查该表的字段信息:

SELECT A.TABLE_NAME,
       A.COLUMN_NAME,
       CASE
          WHEN A.DATA_TYPE <> 'NUMBER' THEN
           A.DATA_TYPE
          ELSE
           CASE
          WHEN A.DATA_PRECISION IS NULL AND A.DATA_SCALE = 0 THEN
           'INTEGER'
          ELSE
           'NUMBER'
        END END ||CASE
         WHEN DATA_TYPE = 'RAW' THEN
          '(' || A.DATA_LENGTH || ')'
         WHEN CHAR_LENGTH > 0 THEN
          '(' || A.CHAR_LENGTH || ')'
         WHEN A.DATA_TYPE NOT IN ('NUMBER','FLOAT') THEN
          ''
         WHEN A.DATA_PRECISION IS NOT NULL AND
              NVL(A.DATA_SCALE, 0) <> 0 THEN
          '(' || A.DATA_PRECISION || ',' || A.DATA_SCALE || ')'
         WHEN A.DATA_PRECISION IS NOT NULL AND
              NVL(A.DATA_SCALE, 0) = 0 THEN
          '(' || A.DATA_PRECISION || ')'
         ELSE
          ''
       END DATA_TYPE,
       A.NULLABLE,
       B.COMMENTS
  FROM USER_TAB_COLS A, USER_COL_COMMENTS B
 WHERE A.TABLE_NAME = B.TABLE_NAME(+)
   AND A.COLUMN_NAME = B.COLUMN_NAME(+)
   AND A.TABLE_NAME = 'ABC'
 ORDER BY A.TABLE_NAME, A.COLUMN_ID;

 

目前测试没有问题,如果大家发现有不准确的字段表示,请给我留言指正. 非常感谢!

 

FLOAT虽然不常使用了,但还是要说一说,它默认长度是126, 而且只有DATA_PRECISION字段记录了该长度,DATA_LENGTH与NUMBER类型一样,都是22. 问题是,NUMBER类型,可以根据DATA_PRECISION和DATA_SCALE辨认是否为不带长度的定义(默认定义),但FLOAT却不会使用DATA_SCALE,因此也无法辨认.  所以我这里直接将默认长度也显示出来,观察了下PL/SQL Developer是把126长度的当做默认来处理了(也就是说只要长度为126就不显示该长度)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics