Oracle 数据库12c新特性总结(四)

本文是Oracle数据库12c新特性的系列文章的第四篇,作者将重点介绍一些对开发者而言非常有用的新特性。相关阅读:Oracle 数据库12c新特性总结(一)Oracle 数据库12c新特性总结(二)Oracle 数据库12c新特性总结(三)

第四部分包括:

  • 如何在子表包含数据的情况下截断一个主表
  • 限制Top-N查询结果的记录
  • SQL*Plus的各种增强
  • 会话级序列
  • WITH语句的改善
  • 扩展数据类型

截断表CASCADE

在之前的版本中,在子表引用一个主表以及子表存在记录的情况下,是不提供截断此主表操作的。而在12c中的带有CASCADE操作的TRUNCATE TABLE可以截断主表中的记录,并自动对子表进行递归截断,并作为DELETE ON CASCADE服从外键引用。由于这是应用到所有子表的,所以对递归层级的数量是没有CAP的,可以是孙子表或是重孙子表等等。

这一增强摈弃了要在截断一个主表之前先截断所有子表记录的前提。新的CASCADE语句同样也可以应用到表分区和子表分区等。

SQL> TRUNCATE TABLE CASCADE; 
SQL> TRUNCATE TABLE PARTITION CASCADE;

如果对于子表的外键没有定义ON DELETE CASCADE 选项,便会抛出一个ORA-14705错误。

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

在之前的版本中有多种间接手段来对顶部或底部记录获取Top-N查询结果。而在12c中,通过新的FETCH FIRST|NEXT|PERCENT语句简化了这一过程并使其变得更为直接。为了从EMP表检索排名前10的工资记录,可以用以下新的SQL语句:

SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC 
FETCH FIRST 10 ROWS ONLY;

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

SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC 
FETCH FIRST 10 ROWS ONLY WITH TIES;

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

SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC 
FETCH FIRST 10 PERCENT ROWS ONLY;

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

SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC 
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;

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

BEGIN 
SELECT sal BULK COLLECT INTO sal_v FROM EMP 
FETCH FIRST 100 ROWS ONLY; 
END;

对SQL*Plus的各种增强

SQL*Plus的隐式结果:12c中,在没有实际绑定某个RefCursor的情况下,SQL*Plus从一个PL/SQL块的一个隐式游标返回结果。这一新的dbms_sql.return_result过程将会对PL/SQL 块中由SELECT 语句查询所指定的结果加以返回并进行格式化。以下代码对此用法进行了描述:

SQL> CREATE PROCEDURE mp1 
res1 sys_refcursor; 
BEGIN 
open res1 for SELECT eno,ename,sal FROM emp; 
dbms_sql.return_result(res1); 
END; 
SQL> execute mp1;

当此过程得以执行,会在SQL*Plus上返回格式化的记录。

显示不可见字段:在本系列文章的第一部分,我已经对不可见字段的新特性做了相关阐述。当字段定义为不可见时,在描述表结构时它们将不会显示。然而,你可以通过在SQL*Plus提示符下进行以下设置来显示不可见字段的相关信息:

SQL> SET COLINVISIBLE ON|OFF

以上设置仅对DESCRIBE 命令有效。目前它还无法对不可见字段上的SELECT 语句结果产生效果。

会话级序列

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

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

SQL> CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1 SESSION; 
SQL> ALTER SEQUENCE my_seq GLOBAL|SESSION;

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

WITH语句的改善

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

WITH 
PROCEDURE|FUNCTION test1 (…) 
BEGIN 
END; 
SELECT FROM table_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。

内容安排 Oracle BIEE+ & BI SE1 —统一的基础平台 Essbase —绩效管理的基石 Oracle BIEE Demo Oracle BI 产品 Oracle商务智能套件企业版Plus 统一的商务智能基础架构 完善的洞察传递功能 旨在普及智能 完善的洞察传递功能 旨在普及智能 Oracle BIEE+ — 普及商务智能应用 获得最大效益,使每个人都能得到洞察力 交互式信息板中的指导性分析 动态、事件驱动的分析驱动着正确行为 简报 “Pack & Go”信息板 通过 Oracle Delivers 察觉和响应 实时的预测性智能 离线分析 具备所有功能的离线客户端 Excel和PowerPoint的高级集成 Oracle商务智能套件企业版 Cisco Systems 的企业商务智能 无处不在的智能 Oracle BIEE+ –普及商务智能应用 Oracle BIEE Architecture Oracle BI Server 功能强大的跨源可伸缩智能 简化的业务模型视图 高级计算和集成引擎 智能请求生成和优化的分布式数据访问 关键任务可伸缩性和性能 所有 OBIEE 表示服务的基础 通用企业信息模型 支持一致性、安全性、重用性、灵活性 Oracle BI Server 充分利用各类数据库本身的功能 Oracle BI Server 对于不同数据源重写功能– 能提供优化的各种数据源本身最优的SQL 经过证明的可伸缩性和灵活性 针对伸缩和性能而构建 优化的原生 SQL 功能传送 并行处理 集群 智能缓存 连接池 支持广泛的数据源 直接支持物理数据源 充分利用现有的 IT 投资 与异构系统的“可热插拔”集成 Oracle商务智能 –普及商务智能应用 Oracle BI 应用产品 基于 OBIEE 构建的预建分析应用程序 Oracle BI Standard Edition One Main BI Product for SMB: OBI SE One Complete BI System in a Box 内容安排 Oracle BIEE+ & BI SE1 —统一的基础平台 Essbase —绩效管理的基石 Oracle BIEE Demo Hyperion Essbase 市场领导的OLAP技术—#1 完全的多线程/并行处理引擎 登录、加载、计算、查询、导出 支持MOLAP、HOLAP 全面的、可扩展的函数库,基于Java的整合方式 分区技术 分摊、内置财务功能和多用户回写支持 提供控制到单元格级的权限管理 跨平台 – Windows NT到IBM OS390 强大的MS OFFICE集成功能 功能强大的计算引擎 由OLAP引擎基于立方体中所定义的层次对模型进行统计计算, 提供函数模版,随时粘贴使用 内嵌250个丰富的数学计算、财务计算和统计计算函数 内置了Expense Reporting、期初值、期末值、期间均值、2次计算、YTD、QTD等功能 提供专业的币种转换模型 支持过程化计算脚本,满足根据复杂的业务逻辑自定义计算规则,可单独计算立方体的任何块区 计算脚本可分顺序计算(serial calc)和并行计算(parallel calc)两种 顺序计算:按计算脚本中的顺序执行 并行计算:一个计算任务分成多个子任务,在多CPU上并行执行 Analytic Services先进的分析平台 满足全方位的分析应用 Essbase 创造了OLAP基准测试的记录! 内容安排 Oracle BIEE+ & BI SE1 —统一的基础平台 Essbase —绩效管理的基石 Oracle BIEE Demo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值