首页 > Linux操作系统 > Linux操作系统 > 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/ ,如需转载,请注明出处,否则将追究法律责任。