1. 苏葳的备忘录首页
  2. 数据库

Oracle自定义数据类型作表列时的访问

oracle 自定义数据类型Oracle除了预定义类型之外,还可以自定义类型,根据需求用户可以自己定义记录数据类型(Record)和记录表类型(Table),其中记录数据类型Record存储是一条记录,记录表类型Table用来存储多条记录。如果记录数据类型Record是一维数组的话,记录表类型Table就是二维数组。Oracle中的自定义数据类型,如嵌套表,既可在PL/SQL中使用也可用作表的一列,比如我们用以下定义:

create or replace type kktype as object (kk1 varchar2(10),kk2 number);

定义一名为kktype的自定义类型。

create table test3(aa1 number,aa2 kktype);

建表,含自定义类型kktype;

在PL/SQL Developer中编辑数据,可在窗格中看到aa1,aa1.kk1,aa1.kk2三列,可输入数据。但如何查询数据呢?

select * from test3;

将显示如上3列。正常。

select aa1 from test3;

将显示两列,也正常。

select aa1.kk1 from test3;

此时肯定出错。正确的访问方式是使用表的别名:

select t.aa1.kk1 from test3 t;

原因为何,不明。同样,在insert时,似乎无法插入自定义数据类型的单元素。必须将自定义类型整体插入。

insert into test3(aa2) values(kktype('sssss',33));

由于可用别名,所以update语句可以更新自定义类型的子元素。

update test3 t set t.aa2.kk1='ffffffff' where t.aa1=33;

 

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/351.html

发表评论

邮箱地址不会被公开。 必填项已用*标注