PL/SQL概览
PL/SQL是SQL的过程化扩展,是一种便携的、高性能的过程处理语言。
PL/SQL的优点
与SQL的紧密集成
允许使用所有的SQL数据操作、光标控制、事务控制语句;
所有的SQL函数、操作符和伪列。
支持所有SQL数据类型。不需要在PL/SQL数据类型和SQL数据类型之间进转换;
可以给PL/SQL数据成员赋与表的列或行的类型,而不需要显式地指定该种数据类型。
PL/SQL允许运行SQL查询,一次一个地处理结果集中的行。
PL/SQL支持静态SQL,也支持动态SQL。
静态SQL:在编译时所有文本是确定的。
动态SQL:直到运行时,它的全部文本才能确定。动态SQL可以使应用程序更加灵活和通用。
高性能
PL/SQL是将一个语句块发送给数据库,可以显著地降低应用程序和数据库之间的通信量。
(1)绑定变量
当在PL/SQL代码中嵌入insert, update, delete,select这些SQL语句时,PL/SQL编译器会将where和values子句中的变量转化为绑定变量。每当相同的代码运行时,Oracle可以重用这些SQL语句,这样可以提高性能。
当使用动态SQL时,PL/SQL不会自动创建绑定变量,但可以通过显式指定来在动态SQL中使用绑定变量。
(2)子程序
PL/SQL子程序是以可运行的形式被存储的,可以被重复地调用。因为存储子程序是在数据库服务器上运行的,一个通过网络的单独的调用可能会开始一个很大的工作。任务的分开可以降低网络通信量和提高响应时间。存储子程序是被缓存的且在用户之间共享,这可以降低内存需要和调用开销。
(3)优化器
0 PL/SQL编译器有个优化器,可以重新组织代码取得更好的性能。
高生产力
PL/SQL可以为操作数据写出紧凑的代码。就像PERL一样的脚本语言一样,可以在文件中读、转化和写数据;PL/SQL可以查询、转化和更新数据库中的数据。
PL/SQL有许多功能可节省设计和调试的时间,并且它在所有的环境中都是一致的。可以在一个Oracle工具中学习使用PL/SQL,然后可以将知识转移到其它工具上。例,可以在SQL Developer中创建PL/SQL块,然后在Oracle窗体触发器中使用它。
可移植性
可以在任何运行Oracle数据库的操作系统和平台上运行PL/SQL程序。
可扩展性
PL/SQL存储子程序通过在数据库服务器上集中应用程序处理来提高可扩展性。共享服务器的共享内存设施允许Oracle数据库支持一个节点上的数以千计的并发用户。
对于更进一步的可扩展性,你可以使用Oracle连接管理器来多路传输网络连接。
易处理性
因为可以在数据库服务器上维护子程序的一个拷贝,而不是每个客户端一个拷贝。任何数量的应用程序都可以使用这个子程序,可以在不影响调用它的应用程序的情况下修改子程序。
支持面向对象编程
使用抽象数据类型(ADT)来支持面向对象编程。
支持Web应用开发
PL/SQL可以创建直接从数据库产生Web页面的应用程序。可以通过Web来访问数据库,可以通过内部网访问内部数据。
PL/SQL Web应用程序编程流程类似于CGI PERL脚本。开发者通常使用CGI脚本来动态产生Web页面,但这样的脚本通常不是访问数据的最佳选择。使用PL/SQL存储子程序来传递Web内容提供了数据库访问的能力和灵活性。例,可以使用DML语句、动态SQL和光标。这样也可以避免对每个HTTP请求生成新的CGI进程来处理的开销。
可以完成使用PL/SQL网状和PL/SQL Web Tookit来生成基于浏览器的Web应用。
PL/SQL网关允许Web浏览器通过HTTP监听调用PL/SQL存储子程序。mod_plsql是PL/SQL网关的一个实现,是Oracle HTTP Server的一个插件,允许Web浏览器调用PL/SQL存储子程序。
PL/SQL Web Tookit是一个PL/SQL包的集合,提供了通过mod_plsql在运行时使用存储子程序的通用接口。
支持服务器页面开发
PL/SQL Server Pages(PSPs)允许开发带有动态内容的web页面。PSPs是编写存储子程序的一种替代,每次为web页面写一行html代码。
特定的标签允许在html代码中嵌入PL/SQL脚本。在客户端如浏览器请求页面时脚本执行。脚本可以接受参数,查询和更新数据库,然后显示一个自定义的页面来展示结果。
在开发过程中, PSPs 的行为像一个模板,拥有页面布局的静态部分和内容的动态部分。可以使用喜爱的 HTML 权威工具设计页面布局,为动态内容留有点位符。然后可以使用 PL/SQL 脚本产生内容。结束后,可以以存储子程序形式将 PSP 文件加载到数据库上。来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1101952/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1101952/