首页 > 数据库技术 > 详细

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

时间:2017-03-02 13:59:08      阅读:477      评论:0      收藏:0      [点我收藏+]

沿用 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 更改数据

 

技术分享

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

 

3 UTD 与 Logminer相关

3.1  insert 语句

 

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


由 logminer 抓取的结果如下

技术分享可以看到,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 抓取的数据如下:

 

技术分享

 

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

logminer 抓取的数据如下

 

技术分享

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

3.3 delete 语句

 

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

logminer 抓取的数据如下

 

技术分享

 

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

原文:http://www.cnblogs.com/dspeeding/p/6490195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!