Oracle OCI操作UDT相关学习(二)

沿用 Oracle OCI操作UDT相关学习 一文中定义的类型和表。

1、更改数据

在sqldeveloper 中更新数据,

update dxl.cust set addr.street='a11' where addr.street ='aaa';
commit;

上边这个语句会报错,而如果采用下边这个语句操作则正确
update dxl.cust a set a.addr.street='a11' where a.addr.street ='aaa';
commit;

2、OCI 更改数据

Oracle OCI操作UDT相关学习(二)

同样的,如果在OCI中 SQL中的语句没有用别名来更新,会报错。

应该使用如下语句。

Oracle OCI操作UDT相关学习(二)

3 UTD 与 Logminer相关

3.1  insert 语句

insert into dxl.cust(id,addr) values(1, dxl.addr_type('aaa', 'b', 'c', 'd'));
commit;

由 logminer 抓取的结果如下

Oracle OCI操作UDT相关学习(二)可以看到,col1 列就是 id; col2 列就是addr ; col3 列到col6 列都是addr下类型中个属性的值。这

这里 col2 只起到占位的作用(只有1个字节) 插入该列的数据为0。 可以参考 Oracle UDT有关数据字典的研究 一文中2.2 章节中的 addr列的属性。

3.2 update语句

update dxl.cust a set a.addr.street='a11' where a.addr.street ='aaa';
commit;

logminer 抓取的数据如下:

Oracle OCI操作UDT相关学习(二)

update dxl.cust a set a.id=234 where a.addr.street = 'a11';
commit;

logminer 抓取的数据如下

Oracle OCI操作UDT相关学习(二)

上边两个例子可以看到,如果不修改addr下的数据, col2 不会出现,如果涉及到修改addr下的列,则addr列(col2列)就会跟着一起更新。

3.3 delete 语句

delete dxl.cust a where a.addr.street = 'aaa';
commit;

logminer 抓取的数据如下

Oracle OCI操作UDT相关学习(二)

上一篇:自然语言处理(NLP)相关学习资料/资源


下一篇:android之RatingBar控件用法