欢迎来到天天文库
浏览记录
ID:22634630
大小:185.00 KB
页数:45页
时间:2018-10-30
《oracle应用开发实训指导》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Oracle应用开发实训指导书第一章PL/SQL概述为什么使用PL/SQL?一、PL/SQL将SQL语言(4GL)的强大性和灵活性与3GL的过程性结构融为一体。PL/SQL是ProceduralLanguage/SQL的缩写。正如其名字所示,PL/SQL通过增加了用在其它过程性语言中的结构对SQL进行了扩展,例如:变量和类型(包括预定义和用户定义)。控制结构,如-if-then-else语句和循环。过程和函数。对象类型和方法。过程性结构与OracleSQL无缝地集成在一起,这便产生了一种结构化的强有力的语言。例如,假设我们想修改一个学生纪录的主修课。如果这个学生不存在,我们就想创建一个新纪录。
2、那么,我们可以通过以下的PL/SQL代码实现这个目的:DECLARE/*DeclarevariableswhichwillbeusedinSQLstatements*/v_NewMajorVARCHAR2(10):='History';v_FirstNameVARCHAR2(10):='Scott';v_LastNameVARCHAR2(10):='Urman';BEGIN/*Updatethestudentstable.*/UPDATEstudentsSETmajor=v_NewMajorWHEREfirst_name=v_FirstNameANDlast_name=v_LastName;/
3、*Checktoseeiftherecordwasfound.Ifnot,thenweneedtoinsertthisrecord.*/IFSQL%NOTFOUNDTHENINSERTINTOstudents(ID,first_name,last_name,major)VALUES(student_sequence.NEXTVAL,v_FirstName,v_LastName,v_NewMajor);ENDIF;END;这个例子包括了两个不同的SQL语句(Update和Insert),这是4GL的结构,同时还有3GL的结构(变量声明和IF条件语句)。PL/SQL是独一无二的,它融合了灵活的SQ
4、L和强大的并可具有可配置性的3GL。同时,可以使用该语言集成的过程性结构和数据库访问接口。这些特性使该语言更加健壮和功能强大,非常适合设计复杂的应用程序。二、PL/SQL和网络流量:许多数据库应用程序的构建都使用客户机/服务器模型或者三层模型。在客户机/服务器中,程序本身在客户机上,它将请求发往数据库服务器,等待所需的信息。这些请求使用SQL语言实现。通常,这样做会产生许多次网络传输交互,每个SQL语言都有单独的传输交互。如果使用了PL/SQL,几条SQL语句可被绑定在一个PL/SQL语句块中,作为一个单独的单元发往服务器。这样做网络流量会减少,使应用程序执行得更快。即使客户机服务器在同一台主
5、机,这样也可以提高整个系统的性能,它减少了数据库对数据库的调用次数。PL/SQL打包的优点同样适用于B/S三层模型结构。在这种情况下,客户机(通常运行在HTML浏览器中)和应用程序服务器进行交互,而应用程序服务器随后将同数据库进行交互。后一种交互充分体现了PL/SQL的优点。PL/SQL的功能特性:一、PL/SQL的基本单元式语句块。所有的PL/SQL都是由语句块构成的,他们之间可以相互嵌套。通常,每一语句块负责完成程序中某单元的工作,这样每一语句块就可以分担不同的任务了。语句块拥有以下结构。DECLARE…/*DeclarevariableswhichwillbeusedinSQLstate
6、ments*/BEGIN…END;只有可执行部分是必需的,声明部分和异常部分是可选的。可执行部分必须至少包括一条可执行语句。语句块的不同部分将分派DECLARE/*DeclarevariableswhichwillbeusedinSQLstatements*/v_NewMajorVARCHAR2(10):='History';v_FirstNameVARCHAR2(10):='Scott';v_LastNameVARCHAR2(10):='Urman';BEGIN/*Updatethestudentstable.*/UPDATEstudentsSETmajor=v_NewMajorWHEREf
7、irst_name=v_FirstNameANDlast_name=v_LastName;/*Checktoseeiftherecordwasfound.Ifnot,thenweneedtoinsertthisrecord.*/IFSQL%NOTFOUNDTHENINSERTINTOstudents(ID,first_name,last_name,major)VALUES(student_sequ
此文档下载收益归作者所有