像desc 一样,用sql 查询表字段类型及长度,不多说很简单

anbob@ORCL>CREATETABLETEST_DATATYPE (IDINT,ID2 NUMBER(20),ID3CHAR(2),ID4DATE,ID5 VARCHAR2(30));

Tablecreated.

anbob@ORCL> selecttable_name,column_name,data_type,data_length

2 FROMcolswheretable_name='TEST_DATATYPE';

TABLE_NAME COLUMN_NAME DATA_TYPE DATA_LENGTH

------------------------------ ------------------------------ -------------------- -----------

TEST_DATATYPE ID NUMBER 22

TEST_DATATYPE ID2 NUMBER 22

TEST_DATATYPE ID3 CHAR2

TEST_DATATYPE ID4 DATE7

TEST_DATATYPE ID5 VARCHAR2 30

COLS是USER_TAB_COLUMNS.的同义词,USER_TAB_COLUMNS视图是又是根据USER_TAB_COLS创建.USER_TAB_COLS是来建立在基表上且类型名称也是写在sql代码decode中的,因篇幅原因不再描述

下面创建个procedure返回

create or replace procedure gettype(tname varchar2,cname varchar2)

is

v_ctype varchar2(30);

v_len number;

begin

select data_type,data_length into v_ctype,v_len from cols where table_name=upper(tname) and column_name =upper(cname);

dbms_output.put_line('info: this column ['||cname||']of table ['||tname||'] type is >'||v_ctype||' ,lenth>'||v_len);

end;

anbob@ORCL> exec gettype('test_datatype','id');

info: this column [id]of table [test_datatype] type is >NUMBER ,lenth>22

PL/SQL procedure successfully completed.

anbob@ORCL> exec gettype('test_datatype','id4');

info: this column [id4]of table [test_datatype] type is >DATE ,lenth>7

PL/SQL procedure successfully completed.

desctable_name;

DESCRIBE可以用(只要用DESC即可)来显示表、视图的列的定义,也可以显示同义词、函数或存储过程的说明。语法如下:DESC[RIBE] {[schema.]object[@connect_identifier]}Schema:用户名,如果省去,则为对象的所有者。object可以是表(table),视图(view),类型(type),存储过程(procedure),函数(function),包(package)或同义词(synonym)@connect_identifier数据库连接字串

例: 显示表emp结构

SQL> desc emp

名称 是否为空? 类型

----------------------------------------- -------- -------------

EMPNO NOT NULL NUMBER(4)

ENAME VARCHAR2(10)

JOB VARCHAR2(9)

MGR NUMBER(4)

HIREDATE

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐