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

本文探讨了table()函数在Oracle11g、Oracle12c及DM7环境下的应用,该函数用于将集合类型转换为物理表,便于查询。通过对比测试,详细分析了不同数据库环境下对object、record等类型的支持差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的处理结果让笔者还挺意外,相信后续达梦数据库会更加努力,跟上潮流,在功能性上面找到不足,尽快跟上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值