博客
关于我
用一个package大致说明一下11g--plsql新特性
阅读量:313 次
发布时间:2019-03-03

本文共 1975 字,大约阅读时间需要 6 分钟。

Oracle 11g 新特性解析

Oracle 11g 引入了许多新特性,显著提升了数据库性能和开发体验。本文将从多个方面详细介绍这些新特性。

结果集缓存(Result Set Caching)

结果集缓存是 Oracle 11g 的一个重要新特性。通过在查询中添加 /*+result_cache*/ 提示,可以将结果集缓存到数据库中。这种机制特别适用于在 MIS 或 OLAP 系统中频繁执行的 select count(*) 查询。缓存后,查询性能显著提升,同时完整性得到了保证。Oracle 11g 通过一致性读机制确保数据完整性,缓存读取不会影响原始数据,保证了数据的一致性。

对象依赖性改进

在 Oracle 11g 之前,对象依赖性管理较为复杂。一旦依赖表结构发生变化,相关函数或视图都会变为无效状态(invalid)。11g 对这一问题进行了优化:如果表的结构变化不影响相关函数或视图的依赖属性,则相关对象状态保持不变。这一改进提升了对象管理的灵活性。

正则表达式改进

Oracle 10g 引入了正则表达式支持,极大方便了开发人员。11g进一步优化了正则表达式功能,新增了 regexp_count 函数,并对其他正则表达式函数进行了改进。这些改进使得在处理文本数据时更加高效和灵活。

新SQL语法

Oracle 11g 扩展了 SQL 语法的功能,使之更灵活。例如,函数参数可以通过 => 进行赋值,且这种语法在 SQL 语句中同样适用。例如:

select f(x => 6) from dual;

TCP 包支持 FGAC

Oracle 11g 提供了更高级别的安全控制,支持 FGAC(细粒度访问控制)。通过 utl_tcputl_smtp 等包,可以实现更细粒度的安全管理。这一特性提升了数据安全性,为敏感数据的处理提供了更强的保护。

只读表

在 Oracle 11g 中,直接支持只读表的创建。通过设置表属性为只读,无需依赖触发器或约束。这一特性简化了只读控制的实现,提升了开发效率。

触发器执行效率提升

11g 对触发器执行效率进行了优化,支持触发顺序的指定。通过 FOLLOWSPRECEDES 语句,可以明确触发器的执行顺序,避免触发顺序混乱导致的数据问题。

内部单元内联

在 C 语言中,通过内联函数或宏可以提升函数效率。11g 将这一特性引入 PLSQL,使得小型频繁调用的函数可以内联编译,显著提升执行效率。

触发器顺序

在 Oracle 11g 中,可以为同一表的多个触发器指定执行顺序。默认触发顺序为:BEFORE STATEMENTBEFORE EACH ROWAFTER EACH ROWAFTER STATEMENT。通过 FOLLOWSPRECEDES 关键字,可以自定义触发顺序。

创建无效触发器

11g 允许开发人员创建无效触发器(invalid)。可以在需要时重新编译触发器,提升灵活性和管理效率。

非 DML 语句中的序列

在 11g 中,非 DML 语句中可以直接使用序列。例如:

v_x := seq_x.next_val;

这大大简化了序列值的获取过程。

PLSQL_Warning

通过设置 PLSQL_Warning = enable all,可以在非错误情况下触发警告信息。例如,在调用 when others 时,若未抛出错误则发警告。

PLSQL 的可继承性

Oracle 11g 支持 PLSQL 的可继承性,通过 super 关键字可以实现类似 Java 的继承。这种特性提升了代码复用性和可维护性。

编译速度提升

11g 通过移除对外部 C 编译器的依赖,提升了 PLSQL 代码的编译速度。由于编译过程完全在数据库内部完成,编译效率显著提升。

DBMS_SQL 包改进

DBMS_SQL 包在 11g 中进行了多项改进,支持大于 32k 的 CLOB 操作,同时兼容用户自定义类型和批量操作。这一改进提升了数据处理的效率。

继续关键字

11g 引入了 continue 关键字,支持 PLSQL 循环中的继续语句。这种功能与其他高级语言中的 continue 相同,提升了代码的可读性和效率。

新数据类型:simple_integer

Oracle 11g 引入了 simple_integer 数据类型,这是一个比 pls_integer 效率更高的整数类型。该数据类型特别适用于整数值存储,提升了数据处理效率。

总结

Oracle 11g 引入了多项新特性,显著提升了数据库性能和开发体验。从结果集缓存到触发器优化,再到新数据类型和编译速度提升,11g 为用户提供了更强大的工具。通过合理利用这些新特性,可以进一步优化数据库性能和开发流程。

转载地址:http://nidq.baihongyu.com/

你可能感兴趣的文章
noi 7827 质数的和与积
查看>>
NOI-1.3-11-计算浮点数相除的余数
查看>>
NOI2010 海拔(平面图最大流)
查看>>
NOIp2005 过河
查看>>
NOIP2011T1 数字反转
查看>>
NOIP2014 提高组 Day2——寻找道路
查看>>
NOIp模拟赛二十九
查看>>
Nokia5233手机和我装的几个symbian V5手机软件
查看>>
Non-final field ‘code‘ in enum StateEnum‘
查看>>
none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
查看>>
None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
查看>>
NOPI读取Excel
查看>>
NoSQL&MongoDB
查看>>
NoSQL介绍
查看>>
Notadd —— 基于 nest.js 的微服务开发框架
查看>>
Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Notepad++在线和离线安装JSON格式化插件
查看>>
notepad++最详情汇总
查看>>
notepad如何自动对齐_notepad++怎么自动排版
查看>>
Notification 使用详解(很全
查看>>