ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE对象类型表

ORACLE对象类型表

原创 Linux操作系统 作者:zhouwf0726 时间:2019-04-16 13:12:07 0 删除 编辑
ORACLE对象类型表

TYPE对于有OOP概念的人来说比较容易理解的。OBJECT就是ORACLE中的对象类型。

SQL> CREATE TYPE T_NAME AS OBJECT(
2 COL1 NUMBER,
3 COL2 VARCHAR2(60)
4 );
5 /

Type created

对象类型表有两个使用方法:
1、只有一个对象类型字段的表.

SQL> CREATE TABLE TEST1 OF T_NAME;

Table created

SQL> DESC TEST1;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
COL1 NUMBER Y
COL2 VARCHAR2(60) Y

SQL> INSERT INTO TEST1 VALUES(1,'1');

1 row inserted

SQL> SELECT * FROM TEST1;

COL1 COL2
---------- ------------------------------------------------------------
1 1

--USER_TABLES视图查找不到TEST1
SQL> SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME='TEST1';

TABLE_NAME
------------------------------

--USER_USER_TAB_COLUMNS视图可以找到TEST1
SQL> SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TEST1';

COLUMN_NAME
------------------------------
COL1
COL2

--USER_OBJECTS视图可以找到TEST1,类型为TABLE
SQL> SQL> SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME='TEST2';

OBJECT_NAME OBJECT_TYPE
-------------------------------------------------------------------------------- ------------------
TEST2 TABLE
;

OBJECT_NAME OBJECT_TYPE
-------------------------------------------------------------------------------- ------------------
TEST1 TABLE
2、除对象类型还有其他类型(varchar2等)字段.

SQL> CREATE TABLE TEST2(ID NUMBER,OBJ T_NAME);

Table created

SQL> INSERT INTO TEST2 VALUES(1,T_NAME(1,'1'));

1 row inserted

SQL> INSERT INTO TEST2 VALUES(1,T_NAME(2,'2'));

1 row inserted

SQL> select t.id,t.obj.col1,t.obj.col2 from test2 t;

ID OBJ.COL1 OBJ.COL2
---------- ---------- ------------------------------------------------------------
1 1 1
1 2 2

SQL> SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME='TEST2';

TABLE_NAME
------------------------------
TEST2

SQL> SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TEST2';

COLUMN_NAME
------------------------------
ID
OBJ


如果理解面向对象的概念,对象类型表其实可以发挥CLASS的作用,如果存在多个结构相同的表,可以选择这种处理。但是要注意和普通表的区别。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/756652/viewspace-242448/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle循检
下一篇: ORACLE诊断案例
请登录后发表评论 登录
全部评论

注册时间:2006-02-22

  • 博文量
    458
  • 访问量
    416612