Oracle 查看表结构

一直以来对,PLSQL里的查看表结构念念,想通过SQL实现。但是默认值是Long类型,取不出字符。终于今天想到了一个方法。这个语句只能查询当前用户的表结构,可用于写文档时,直接复制到文档里。

CREATE OR REPLACE fUNCTION GET_Datadefault(in_table_name varchar,
                                           in_column     varchar2)
  RETURN varchar AS
  text_c1 varchar2(32767);
  sql_cur varchar2(2000);
begin
  sql_cur := 'select  Data_default '  ||
             '  from user_tab_columns ' ||
             ' where column_name =' || chr(39) || in_column || chr(39) ||
             '  and  Table_Name=' || chr(39) || in_table_name || chr(39);
  dbms_output.put_line(sql_cur);
  execute immediate sql_cur
    into text_c1;

  text_c1 := substr(text_c1, 1, 4000);
  RETURN TEXT_C1;
END;

 

--查询表结构
select A.column_name 名称,
       Case
         When a.Data_Type = 'VARCHAR2' Then
          'VARCHAR2(' || a.Data_Length || ')'
         When a.Data_Type = 'NUMBER' and A.Data_Scale = 0 Then
          'INTEGER'
         When a.Data_Type = 'NUMBER' and A.data_precision > 0 Then
          'NUMBER(' || a.data_precision || ',' || A.Data_Scale || ')'
         Else
          a.Data_Type
       End 类型,
       decode(A.nullable, 'Y', 'Y', '') 可为空,
       GET_Datadefault(A.Table_Name, a.COLUMN_NAME) 默认,
       B.comments 注释,
       (Select 'Y'
          From User_Constraints Con, User_Cons_Columns Col
         Where Con.Constraint_Name = Col.Constraint_Name
           And Con.Constraint_Type = 'P'
           And Col.Column_Name = a.Column_Name
           And Col.Table_Name = a.Table_Name) 主键
  from user_tab_columns A, user_col_comments B
 where a.COLUMN_NAME = b.column_name
   and A.Table_Name = B.Table_Name
   and A.Table_Name = 'FREIGHT_PRICE_RANGE'--表名
 order by A.COLUMN_ID

 

 

转载于:https://my.oschina.net/u/3318604/blog/1519244

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值