推荐期刊

PL/SQL技术及应用

时间:2015-12-20 23:29:50 所属分类:天然气工业 浏览量:

摘 要:给出了PL/SQL的概念和基本结构及技术,介绍了PL/SQL的块结构和游标、包技术及基本的语法规则,并结开发的实例进一步对PL/SQL的技术和规则进行了阐述。 关键词:PL/SQL , Oracle 由于油田信息化的发展,油田开发越来越依赖于开发数据,这就意味着要求

摘 要:给出了PL/SQL的概念和基本结构及技术,介绍了PL/SQL的块结构和游标、包技术及基本的语法规则,并结开发的实例进一步对PL/SQL的技术和规则进行了阐述。

关键词:PL/SQL , Oracle
由于油田信息化的发展,油田开发越来越依赖于开发数据,这就意味着要求开发数据要具有更高的存储、查询、转化的能力,而传统的dbf数据库已不能适用油田开发的需要,Oracle数据库因为有强大的数据库管理功能,逐渐取代了传统的dbf数据库,并在油田各采油厂被广泛的使用和积极的推广。如何管理和使用Oracle数据库,我们引入了PL/SQL Developer软件。
一、PL/SQL基本概念
  PL/SQL也是一种程序语言,是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。使用PL/SQL可以编写具有很多高级功能的程序,虽然通过多个SQL语句可能也能实现同样的功能,但是相比而言,PL/SQL具有更为明显的一些优点:
(1)能够使一组SQL语句的功能更具模块化程序特点。
(2)采用了过程性语言控制程序的结构。
(3)可以对程序中的错误进行自动处理,使程序能够在遇到错误的时候不会被中断。
(6)具有较好的可移植性,可以移植到另一个Oracle数据库中。
(7)集成在数据库中,调用更快。
(8)减少了网络的交互,有助于提高程序性能。
二、 PL/SQL程序的基本结构及技术
2.1块
PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。
(1)块的三个部分。①声明部分(Declaration section):包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分。②执行部分(Executable section):执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。③异常处理部分(Exception section):这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论在后面进行。
(2)块语。PL/SQL块语法结构:[DECLARE];Declaration Statements;BEGIN; Executable Statements;[EXCEPTION Exception ;Handlers];END。
PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以多行,但分号表示该语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。每一个PL/SQL块由BEGIN或DECLARE开始,以END结束。注释由--标示。
2.2游标
(1)概念。用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上作操作。
(2)分类。静态游标分为显式游标和隐式游标。REF游标是一种引用类型,类似于指针。
(3)内容。显式游标:CURSOR游标名(参数) [返回值类型] IS? Select语句;生命周期:打开游标(OPEN);解析,绑定。不会从数据库检索数据;从游标中获取记录(FETCH INTO),执行查询,返回结果集。通常定义局域变量作为从游标获取数据的缓冲区;关闭游标(CLOSE),完成游标处理,用户不能从游标中获取行。还可以重新打开。隐式游标:我们可以使用for循环来对游标进行隐式处理。For循环中变量v_test不需要在声明部分声明,它由PLSQL编译器进行隐式的声明。并且for循环开始的时候,游标也就隐式地打开了。显式和隐式游标的区别:尽量使用隐式游标,避免编写附加的游标控制代码(声明,打开,获取,关闭),也不需要声明变量来保存从游标中获取的数据。
2.3包
  包它是有包规范和包体两部分组成的,当建立包时,需要先建立包规范,再建立包体。
(1)建立包规范。包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标。过程和函数等。再包规范中所定义的公用组件不仅可以再包内引用,而且也可以由其他的子程序引用。也就是说再包规范中所定义的公用组件是公开的、是可以被其他的程序所调用的。换一个角度说,为了实现信息的隐藏,不应该将所有组件全部放在包规范处定义,而应该只定义想对其他用户公开的组件即公用组件。
(2)建立包体。包体用于实现过程和函数,包括用于实现包规范所定义的过程和函数。建立包体时,也可以单独定义私有的组件,包括变量、常量、过程和函数等,但再包体中所定义的私有组件只能再包内使用,而不能由其他子程序引用。
(3)包技术优点。便于管理:在开始编程时,便为每个项目建立一个相应的包,并且包的名称即为项目名称。这样在项目开发和日后的维护上,开发和管理人员会很方便的找到项目的对应程序。不会因时间或其他人员接手而产生在库中无处可寻项目程序的情况。有助于信息的隐藏:只在包规范中对一些想对外公开的组件进行定义,这样就对开发人员所编写的算法进行了保护,保护住了算法的私有性就保护住了开发软件的技术核心,因为一个软件的最重要的就是它的算法,软件公司卖的实质也是软件的算法。这样使用包技术就有效的保护了知识产权。
三、 PL/SQL的基本语法
  在写PL/SQL语句是,必须遵循一些基本的语法,PL/SQL程序代码的基本语法要求:
(1)语句可以写在多行,就像SQL语句一样。
(2)各个关键字、字段名称等等,通过空格分隔。
(3)每条语句必须以分号结束,包括PL/SQL结束部分的END关键字后面也需要分号。
(4)标识符需要遵循相应的命名规定。名称最多可以包含30个字符;不能直接使用保留字,如果需要需要使用双引号括起来;第一个字符必须以字母开始;不要与数据库的表或者科学计数法表示。
四、PL/SQL实例
PROCEDURE p_jshscl(p_km VARCHAR2) IS–计算核实产量
cursor mycu is select dwdm,bhjh
from t_scrbzd
where gxsj = v_maxrq
and lb='2'
and km=p_km
order by xh;
begin
delete from tz_djyjsj where rq=v_rq and km=p_km;
FOR emp_rec IN mycu LOOP
p_djsj (emp_rec.bhjh,p_km);-提取油井单井数据
p_pfhs(emp_rec.dwdm);-批分核实
p_hphs(emp_rec.dwdm);-回配
insert into tz_djyjsj select * from tz_djyjsc;-生成油井单井数据表
commit;
END LOOP;
END p_jshscl;
五、总

[1][2]下一页

转载请注明来自:http://www.zazhifabiao.com/lunwen/gcjs/trqgy/31090.html