在最近召开的DOAG2022大会上,甲骨文公开了OracleDatabase23c的一系列新特性。下面我将选出10个有趣的特性,做一个快速概览,与大家分享。一、不带FROM子句的SELECT查询我们知道,在MogDB数据库中,SELECT可以实现一系列不带FROM子句的查询功能,例如:MogDB=#select2^10;?柱子?----------1024(1行)MogDB=#select9*9;?柱子?----------81(1row)在Oracle23c中,第一次实现了无From子句的查询,所以严重依赖Dual表的查询可以松一口气了:2.单表支持4096列。我们知道,MogDB单表最大支持1600列,而Oracle之前版本的单表支持1000列。在23c中,单表支持的列数扩展到4096列。要启用此功能,需要将兼容性参数设置为23.0.0,并将Max_columns设置为Extended:altersystemsetMAX_COLUMNS=EXTENDED;3.SCHEMA级别的权限在23c之前的版本。如果其他用户被授权使用Schema,则需要通过系统权限或对象权限单独出现的授权,这会给数据库带来额外的安全风险或复杂性。Oracle23中可以授权Schema,简化了之前的全行操作:grantselectanytableonSCHMEAPRODtoHR;4.布尔数据类型最后,在OracleDatabase23c中,支持布尔数据类型:5.基于别名的GROUPBY最后,我们不再需要在GroupBy中重复长表达式,现在支持基于别名的GROUPBY和locations,大大简化了SQL的文本和书写,毕竟Groupby是如此常用和无处不在:6.Oracle21cMLE中引入的Javascript存储过程支持数据库内部的Javascript。现在,23c实现了javascript存储过程,进一步扩展和增强了数据库中的处理能力:7.SQLDomainsSQL域,域是特定类型的数据元素的通用定义,如姓名、邮政编码、国家代码。这个通用定义可以有几个属性——例如格式(检查约束)、默认值、默认显示格式,以及在按基于字段的值排序时使用的表达式。在OracleDatabase23c中,域可以定义为数据库对象,并且在定义列时,它们可以链接到域定义,形成一个潜在的元数据组。显示格式和排序依据表达式可用于带有新函数DOMAIN_DISPLAY和DOMAIN_ORDER的查询语句。8、DDL的IFEXISTS判断DDL中支持IF[NOT]EXISTS判断,从而避免执行过程中的错误、异常和中断:9、注释和注解增加对数据库对象的元数据支持,可用于表和视图、列、索引、PL/SQL程序单元、物化视图和字段添加注释。10、标准表值构造一次生成多行记录,基于ISOSQL标准实现:
