达梦数据库,Oracle 11g、12c集合类型下使用table()操作符对比测试

table()可以算作一个用户自定义的PL/SQL函数,经常可以看到它与管道函数(pipeline function)搭配使用,具体何为管道函数,请自行查询相关文档。

它的作用就是将函数返回的集合类型(嵌套表nested table或者数组varray)转换成物理表,方便我们查询它。

举个例子O记的执行计划查询,也是使用这个函数,ex:select * from table(dbms_xplan.display())
本文在Oracle11g、Oracle12c及DM7环境下,多种集合类型中使用table()做对比测试,测试用例及结果如下。

  1. object类型测试table():
    Oracle11g,Oracle12c,DM7均通过测试。
    在这里插入图片描述

  2. record类型测试table(),使用关联数组:
    DM7报"无效的数组查询对象",Oracle11g报"循环索引变量 ‘REC2’ 的使用无效",Oracle12c通过测试,正常运行出结果。
    在这里插入图片描述

  3. record类型测试table(),使用嵌套表类型:
    DM7正常执行出结果,Oracle11g报"在SQL 语句中不允许使用本地收集类型",Oracle12c通过测试,正常运行出结果。
    在这里插入图片描述

  4. record类型测试table(),使用数组varray类型:
    DM7正常执行出结果,Oracle11g报"在SQL 语句中不允许使用本地收集类型",Oracle12c通过测试,正常运行出结果。
    在这里插入图片描述

DM7在各种情况对比Oracle11g、Oracle12c的处理结果让笔者还挺意外,相信后续达梦数据库会更加努力,跟上潮流,在功能性上面找到不足,尽快跟上。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值