oracle12c常用新特性,开发者必读:Oracle12c新特性再总结

1. 对Top-N查询结果限制记录

在之前的版本中有多种间接手段来对顶部或底部记录获取Top-N查询结果。而在12c中,通过新的FETCH

FIRST|NEXT|PERCENT语句简化了这一过程并使其变得更为直接。为了从EMP表检索排名前10的工资记录,可以用以下新的SQL语句:

SQL>SELECTeno,ename,salFROMempORDERBYSALDESCFETCHFIRST10ROWSONLY;

以下示例获取排名前N的所有相似的记录。例如,如果第十行的工资值是5000,并且还有其他员工的工资符合排名前N的标准,那么它们也同样会由WITH

TIES语句获取。

SQL>SELECTeno,ename,salFROMempORDERBYSALDESCFETCHFIRST10ROWSONLYWITHTIES;

以下示例限制从EMP表中获取排名前10%的记录:

SQL>SELECTeno,ename,salFROMempORDERBYSALDESCFETCHFIRST10PERCENTROWSONLY;

以下示例忽略前5条记录并会显示表的下5条记录:

SQL>SELECTeno,ename,salFROMempORDERBYSALDESCOFFSET5ROWSFETCHNEXT5ROWSONLY;

所有这些限制同样可以很好的应用于PL/SQL块。

BEGINSELECTsalBULKCOLLECTINTOsal_vFROMEMPFETCHFIRST100ROWSONLY;END;

会话级序列

在12c中现在可以创建新的会话级数据库序列来支持会话级序列值。这些序列的类型在有会话级的全局临时表上最为适用。

会话级序列会产生一个独特范围的值,这些值是限制在此会话内的,而非超越此会话。一旦会话终止,会话序列的状态也会消失。以下示例解释了创建一个会话级序列:

SQL>CREATESEQUENCE my_seq

STARTWITH1INCREMENTBY1SESSION;

SQL>ALTERSEQUENCE my_seq

GLOBAL|SESSION;

对于会话级序列,CACHE, NOCACHE, ORDER 或 NOORDER 语句会予以忽略。

在12c中,你可以用SQL更快的运行PL/SQL函数或过程,这些是由SQL语句的WITH语句加以定义和声明的。以下示例演示了如何在WITH语句中定义和声明一个过程或函数:

WITHPROCEDURE|FUNCTIONtest1

(…)BEGINEND;SELECTFROMtable_name;/

尽管你不能在PL/SQL单元直接使用WITH语句,但其可以在PL/SQL单元中通过一个动态SQL加以引用。

扩展数据类型

在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及

RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节。只要可能,扩展字符的大小会降低对LOB数据类型的使用。为了启用扩展字符大小,你必须将MAX_STRING_SIZE的初始数据库参数设置为EXTENDED。

要使用扩展字符类型需要执行以下过程:

1. 关闭数据库

2. 以升级模式重启数据库

3. 更改参数: ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED;

4. 执行 utl32k.sql as sysdba : SQL>

@?/rdbms/admin/utl32k.sql

5. 关闭数据库

6. 以读写模式重启数据库

对比LOB数据类型,在ASSM表空间管理中,扩展数据类型的字段以SecureFiles

LOB加以存储,而在非ASSM表空间管理中,它们则是以BasciFiles LOB进行存储的。

注意:一旦更改,你就不能再将设置改回STANDARD。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值