PLSQL简介(一)【翻译】
PLSQL简介(一)【翻译】
原书:steven feuerstei-oracle PLSQL grogramming 2014
PL / SQL代表“结构化查询语言和过程语言。 Oracle公司推出了PL / SQL克服SQL中的一些限制并提供更完整的编程解决方案。
什么是PLSQL
Oracle的PL / SQL语言有几个定义特征:
它是一种高度结构化,可读且易于使用的语言,如果您不熟悉编程,PL / SQL是一个很好的起点。你会发现的
它是一种易于学习的语言,并且具有明确的关键字和结构来表达你的代码的意图。如果您有其他编程语言的经验,你将很容易适应新的语法。
它是Oracle开发的标准和可移植语言,如果编写PL / SQL过程或函数以在Oracle中执行数据库坐在您的笔记本电脑上,您可以将相同的过程移动到数据库在您的公司网络上执行它而不做任何更改。 一次编写,到处运行是Java出现之前很久就有PL / SQL的口号。但对于PL / SQL,无处不在的意思是“到处都有Oracle数据库”。
它是一种嵌入式语言PL / SQL并非设计用作独立语言,而是在主机环境中使用。因此,例如,您可以从数据库中运行PL / SQL程序(例如,通过SQL * Plus接口)。或者,您可以在Oracle De-veloper表单或报表中定义和执行PL / SQL程序(此方法称为客户端PL / SQL)。但是,您不能创建一个可以自行运行的PL / SQL可执行文件。
它是一种高性能,高度集成的数据库语言。现在,在编写软件以运行Oracle数据库时,您有很多选择。您可以使用Java和JDBC;你可以使用Visual Basic和ODBC;你可以使用Delphi,C ++等。但是,您会发现,使用任何其他语言编写高效的代码来访问PL / SQL中的Oracle数据库更容易。特别是,Oracle提供某些特定于PL / SQL的增强功能,例如FORALL语句,可以将数据库性能提高一个数量级或更多。
PLSQL起源
Oracle 公司一直领导软件行业,为数据库和应用程序的设计提供声明式,非过程性的方法。 Oracle服务器技术是世界上最先进,功能最强大,最稳定的关系数据库之一。它的应用程序开发工具,例如Oracle Forms,通过严格依赖“绘制屏幕”方法提供高水平的生产力,可以让开发人员避免繁重的自定义程序设置。
PLSQL早期版本
在Oracle的早期阶段,SQL的声明性方法与其突破性的关系技术相结合,足以满足开发人员的需求。但随着行业的发展,预期上升,需求变得更加严格。开发人员需要获得产品一些更深入的东西。他们需要在表单和数据库脚本中构建复杂的准则,异常和规则。
1988年,甲骨文公司发布了Oracle版本6,这是其关系的重大进步数据库技术。该版本的一个关键组成部分是所谓的程序性选项,或PL / SQL。几乎在同一时间,Oracle发布了期待已久的升级版到SQL * Forms版本2.3(现在称为Oracle的产品的原始名称表格或表格开发者)。 SQL * Forms v3包含了PL / SQL引擎,第一次在工具方面,允许开发人员编写他们的程序逻辑自然,直截了当的方式。
PL/SQL的第一次发布在其能力上是非常有限的。在服务器端,您只能使用PL/SQL来构建过程和SQL状态的“批处理”脚本。不能在服务器中构造模块化应用程序或存储业务规则。在客户端,SQLFraseV3.0确实允许您创建过程和函数,虽然对函数的支持未被记录,因此多年来它们没有被许多开发人员使用。此外,PL/SQL的这种发布没有对数组进行支持,并且不能与操作系统(输入输出)交互。这与一门成熟的编程语言相去甚远。
但是由于它的所有的这些的局限性,PL / SQL在开发人员社区中得到了热烈的,甚至是热情的。对在SQL * Forms中编写简单IF语句的能力的渴望很强烈。执行多SQL语句批处理的需求势不可挡。
当时很少有开发人员意识到PL / SQL背后的原始动机和驱动超出了对SQL * Forms等程序控制内部产品的需求。在Oracle数据库和工具的生命周期的早期,Oracle公司已经认识到其架构中的两个关键弱点:缺乏可移植性和执行权限问题。
改善可移植性
对于熟悉Oracle公司的人来说,对可移植性的担忧可能有点奇怪poration的营销和技术策略。 Oracle解决方案的标志之一 -
从20世纪80年代初开始的是它的移植行。在PL / SQL出现的时候,基于C的数据库在许多不同的操作系统和硬件平台上运行。SQL * Plus和SQL * Forms可轻松适应各种终端配置。然而所有这些报道,仍然有许多应用程序需要更复杂比如COBOL,C和FORTRAN等宿主语言提供的颗粒度控制。如一旦开发人员走出端口中立的Oracle工具,最终的应用程序将不再是便携式的。
PL / SQL语言是(并且是)旨在扩大应用范围 ,可以在独立于操作系统的编程中完全处理的工具。今天Java和其他编程语言提供了类似的可移植性。然而PL / SQL作为该领域的早期先驱脱颖而出,当然,它继续允许开发人员编写高度可移植的应用程。
改进执行权限于事务的完整性
比可移植性更基本的问题是执行权限。数据库SQL语言可以让您严格控制对任何特定内容的访问和更改
数据库表。例如,使用GRANT命令,您可以确保只有某些角色和用户可以对给定的表执行UPDATE。这个GRANT 命令在另一方面,无法确保用户对大多数业务对于一个或多个表做出正确的执行顺序。
PL/SQL语言提供了对逻辑事务的严格控制和管理。一方面,PL/SQL是通过执行权限的实现来实现的。相反,授予角色或用户更新表的权限时,只授予权限执行一个过程,该过程控制并提供对基础数据结构的访问。 该过程由不同的Oracle数据库架构(“定义者”)所拥有。 然后,授予这些需要事务的表的更新权限。 程序因此称为事务的“看门人”。一个程序(不管它是oracle-forms还是pro-c可执行文件)的唯一方法是通过该过程,从这个角度,应用程序的事务的完整性就得到了保障。