PL/SQL优点

        PL/SQL 是一个可移植、高效的事务处理语言

1、SQL 的支持

        SQL 因为它的灵活、强大和易学,已经成为标准的数据库语言。只要几个像SELECT、INSERT、UPDATE 和DELETE 这样简单的命令就能轻松地操作关系数据库中的数据。SQL 是非过程化的,这就是说我们可以决定做我们想做的,但不能决定如何做。Oracle 会决定处理我们请求的最佳方案。

        PL/SQL 能让我们使用所有的SQL 数据操作,游标控制和事务控制命令;也可以使用所有的SQL 函数,操作符和伪列。所以,我们可以灵活安全地操作Oracle 数据。PL/SQL完全支持SQL 数据类型,这就减少了我们的应用程序和数据库间数据传递时的类型转换。

        PL/SQL 也支持动态SQL 语句,这样能够让我们的应用程序更加灵活通用。程序可以在运行时处理SQL 数据定义、数据控制和会话控制语句。

2、面向对象的支持

        对象类型是理想的面向对象建模工具,它能帮助我们创建复杂的应用程序。除了能创建模块化,易维护和重用性高的软件组件外,对象类型还可以让不同开发组的程序员并发地开发组件。

        对象类型通过对数据操作的封装,把数据维护代码从SQL 脚本和PL/SQL 块中提取出来,放到独立的方法中去。同样,对象类型也可以隐藏实现,这样我们就在不影响客户端程序的情况下改变实现细节。

        此外,真实世界的复杂实体和关系也能够映射到对象类型中去。这样我们的程序就能更好将模拟的内容反映出来。

3、良好的性能

        如果没有PL/SQL 的话,Oracle 就必须每次接收一条SQL 语句,然后处理。每条SQL 语句都会调用一次Oracle,这就造成很大的运行开销。在网络环境中,这种现象就更加明显。如下图所示,如果应用程序与数据库之间交互频繁,那么就可以在向Oracle 发送SQL 语句之前使用PL/SQL 块和子程序把SQL 语句组合起来。

        有了PL/SQL,整块的语句就可以一次传递给Oracle,这样就能减少应用程序和Oracle 的通信,减少网络开销,如下图所示,如果我们的应用程序与数据库的交互操作较多,那么就可以用PL/SQL 块和子程序将SQL 语句组织起来一次性地发送给Oracle 执行。


        PL/SQL 块和子程序能够在编译成可执行的形式存放起来,所以调用存储过程是快速和高效的。而且,存储过程是在服务器端执行的,减少网络流量改善响应时间。可执行的代码会被自动地放到缓存然后在多个用户间共享。
我们也可以为Oracle 工具提供PL/SQL 的过程处理功能来改善性能。这样我们就可以直接利用工具来进行计算而不用调用Oracle 服务器。这样会节省大量的时间和网络开销。

4、高效性

        对于像Oracle Forms 和Oracle Reports 这样的非过程化工具,在加入了PL/SQL功能后,我们也可以使用熟悉的过程语句来建立应用程序。例如,我们可以在Oracle Form 触发器中使用整块整块的PL/SQL 块,而不必多次调用触发器,宏等。所有环境中的PL/SQL 都是一样的。一旦我们掌握了PL/SQL,那么我们就可以在任何支持PL/SQL 的工具中使用它。

5、可移植性

        用PL/SQL 编写的应用程序都可移植到Oracle 运行的操作系统和平台。换句话说,PL/SQL 程序可以在任何Oracle 能够运行的地方而运行,因此,我们不必为每一个新环境定制一套新的PL/SQL 程序。

6、与SQL 紧密结合

        PL/SQL 和SQL 语言是紧密结合的。PL/SQL 支持所有的SQL 数据类型和NULL。这样一来,我们操作Oracle 数据就变得方便快捷。%TYPE 和%ROWTYPE 属性进一步的拉近PL/SQL 和SQL 的关系。例如,我们可以通过%TYPE 属性,在已定义的数据库字段的基础上声明同类型的变量。如果数据库定义发生改变的话,在下一次编译或运行时,变量的声明类型也会随之变化。这就减少了代码维护的开销,使程序自动地适应于新的业务需求。

7、高度安全

        PL/SQL 存储过程能使客户端和服务器端的逻辑分离,避免让客户端操作敏感的Oracle 数据。用PL/SQL 编写的触发器可以有选择性的允许应用程序更新数据,并可以根据已有的内容来审核用户的插入操作。

        另外,我们还可以让用户只通过调用定义者权限的存储过程,来严格控制用户对Oracle 数据的访问。例如,我们可以授权用户来调用更新数据表的存储过程,但不授权他们直接访问数据表的权限。

猜你喜欢

转载自blog.csdn.net/panjin72/article/details/81660502
今日推荐