《PLSQL是ORACLE对标准数据库语言的扩展.docx》由会员分享,可在线阅读,更多相关《PLSQL是ORACLE对标准数据库语言的扩展.docx(76页珍藏版)》请在优知文库上搜索。
1、PUSQ1.jORAC1.E对标准数据岸语古的扩展,ORAC1.E公司已经相P1.JSQ1.解介到ORAC1.E效劳器和其他工R中了.近几年中更功的开发人员和DBA开始快用IVSQ1.本文格讲述P1./SQ1.基础语法,结构和纸件、以及如何设计并执行个PUSQ1.程17.PiySQ1.ttftA从版本6开始P1./SQ1.就被可靠的整合到ORACIE中1.一旦辛理P1./SQ1.的优点以及其独行的数据管理的便利性,那么你很难想象ORAC1.EKTP1./SQ1.的情形,P1./SQ1.不是一个独立的产品,他是一个整合到ORAC1.E效劳!S和ORAC1.E工具中的技术.可以把P1./SQ1.看
2、作ORAC1.E效劳器内的一个引聚,SqI语句执行者处理第个的却语句,P1./SQ.引擎处理P1./SQ1.和序焕.当P1./SQ1.程序块在P1.,SQ1.引芋处理时.ORAC1.E效劳器中的SQ1.语句执行器处理p1./sq1.程序块中的SQ1.语句.P1./SQ1.的优点如下.P1./SQ1.H种而性能的基于事务处理的语百,的运行在任何ORAC1.E环境中.支持所有数据处理命令.通过使用P1./SQ1.程序单元处理SW的数据定义和数据控加元案.P1./SQ1.支持所在SQ1.故据类型和所有SQ1.函故.I可时支杵所HORAC1.E对象炎型.P1./SO1.块可以被命名和存储在ORAC1.
3、E效劳正中,同时也能被其他的P1./SQ1.程序或SQI.命令调用,任何客户/效劳奋工具都能访问P1.ZSQ1.fSJ7,具有很好的可)6用性.,可以使用ORACI.E数据工具管理存植在效劳器中的P1./SQI.程序的平安性.可以授权或撤销数榭库其他用户访何PUSQ.程序的能力.P1.JSQ1.代因可以使用仟HSC11文本编辑器编写.所以对任何ORAC1.E能够运行的探作系统都是I1.第便利的,对于SW,ORACir必须在同一时间处理他一条SQI.谕句,在网络环境下这就意味作每一个独立的调用都须被orac1.e效劳器处理,这就占用大氽的效劳法时间,同时导致网络拥挤,而P1./SQ1.足以整个语
4、句块发给效劳器,这就降怔了网络拥挤,FVSQ1.块结构P1./SQ1.是一种块结构的语古,组成PiJsQ1.程序的的元是逻辑块,一个P1.JSQ1.程序包含了一个或多个逻辑块,年个块都可以划分为三个局部.与其他讲?(相同.变量在使用之前必须声明,P1./SQ1.提供了枚立的专门用于处理弁常的局都.卜面描述了P1.JSW块的不同局部:声明IIiB(DeC1.arat100section)声明局部包含/变量和常量的数据类型和初始侦这个局却是由关健字DEC1.ARE开始,如果不需要声明变紧或常后,那么可以忽略这一后部;需婴说明的是涉标的声明也在这一局部。执行II.(Executab1.esectio
5、n)执行局但是PtSQ1.块中的指令JEj加,由关键字BEGIN开始,所有的可执行语句施放在这一局部,其他的P1./SQ1.块也可以放在这一局部.异偶处JI(Excepticnsection)这一局部是可选的,在这一局部中处理异常或恰谈,对异常处理的详细讨论我幻花后面进行.PISQ1.坎培法(eCUREdecIttra1.ionS1.atetwitvBKG1.N-SaCUt(SbIQStAtetMmtsIn(EPHiW)exceptionS1.a1.vtvn1.sEXDP1./SQ1.块中的每一条语句都必翁以分号结求,SQ1.语句可以使多行的,但分号弟示该语句的结束,一行中可以有多条SU1.i
6、,他们之何以分号分隔。每一个P1./SQ1.块由BEGN或DEC1.ARE开钻.以END结束。注棒由一标示。JVSQ1.软的名和名Pt/SQ1.程序块可以是一个命名的程序块也可以是一个国名程序块.圣名程序块可以用在效劳森地也可以用在客户端。命名税分块可以E现在其他P1./SQ1.程序块的声明局都,这方市比较明显的是子程序,子程序可以在执行舄郎引用,也可以在异常处理局部引用.P1./SQ1.程序块可带独立茹译并存精在数挤(S中,任何与敢想库相芝茂的应用程序机可以访河这柜育储的P1./SQ1.程序块.ORAC1.E提供了四种类型的不存储的程序:.ffift.it,包.触发器出数是命名了的.存特在数
7、弟之中的P1./SQ1.程序块.函数挂殳零个或多个。入与效,有一小卷E1.值,退日值的敢据美型在创立由次时定义。定义函数的返法如下:R!NCT10*ina11e1.parnnMr.arateter.)JRETVRXdatatypesIS(xadec1.arationsBSG1.NexecuteS1.a1.ewntsEXBPTISiexceptionhand1.ersEXDria*过存储过程是一个P1./SO1.程序块,接受零个或多个与数作为怆入(INPirT)或输出(X11UD或班作输入又作物出(INa/D.与函数不同.存储过程没有退回慎.存传过程不能由SQ1.语句直揍使用.只能通NEXEC1
8、.i冬或P1./SQ1.程序块内部M1.用.定义存储过程的语法如下:PH1.x1.iICHEnwn?(purater(.(urun*1.cr.)ISI1.IXa1.dec1.ara1.iontf)IUiG1.N0XCwe(CWSTANT)daabyte(NOTM1.1.):=UEF1U1.1.eMpress1.nn注Jt:可以在声明变量的同时给受量及制性的力上NOTNIJ1.1.约束条件,此时交量在初始化时必然取值.*给交量取值有两种方式:直接给变量赋值IMWUERICREA1.SMAmWP1.sjmeger-2M4I7与肘NAFYMGER长本中同,但录用矶4运算计,PtSJXT丽提做更好的性
9、能.表2字秆电将类型datatyperangsubtypedccripticoIchar最大长度367字OIAftXCTER1.aSc最大长度2】“4836n字q存储N文长度字符字RAHftXK3Z767字节.一:.遂行缝糙.IjftW最大长皮2M7d836,7与1.aW数据夷里相似,同徉他也不让在字将集之同进行料我.RW11)18个字节:方式2m1.1.:”:、一二,:.;一.、,:,方行标示不:.噌一我值.VARCI4W2最大代质3276多多节STRIKGAKUIAR与YAKHAR我格笑里相慎,3的耳交上足的字符中/明方法与YRRCHAR相同表3DATE和BOO1.1.iiWdatatyp
10、e-;,“:,descriptIunBOo1.EAXTRUE小吹存贵辑今TRUE或FA1.SE.无金般INTEO014712BC育旬田定长的日期和肘向佰日电值中也谷计同1.oB数据美型IOB(大时象,1.argeQbjcc1.)数据表至用于存铭美假网像.声音达杼的大型数窕对象.数据对欧可以是二造制数据也可以是字符数奏,其最大长度不趣过4G。1.OB数据赛至支括任意访问方式,1.QM只支持顺序访问方式。U)B存储在一个单独的性*上.同时一个1.OB定位符F1.OB1.OCaSr)存隹在原始的表中,该定(符是一个指向实际数据的指针,在P1.ZSf1.1.中件1.(复据使用ORAC1.E提供的包DB
11、MS1.OB.1.OB品据类至可分为以下四哭:.BFI1.E.B1.OB.C1.0B.NC1.OB操作符与其他程序设计语吉相同,P1./SQ1.有一系列操作苻。操作将分为下面几类:.算术操作符.关系操作符.比较理作符.更辑探作符算术操作符如aI所示operatoroperation-减*枭方关系操作符主要用于条传为新语句或用于hrrc子阜中.关系掾作杵检交击件和结果是否为IrUC或IxIJiC.表5是P1./SQ1.中的关系操作符operator=大于戊等于胡作杵I等于攫作钎!=不等于播.作忤b不等于怪作得!a*ftf1.表6显示的是比较操作符M?rutorc*11H1.gISXU1.1.MN
12、1.UiSaiR1.E1.IKE比收字轩僮BtrrAEbX监正值是否在苑Oi之内IN&让提作数在或冗的一展列僮中表7.8显示的是逻崂操作符pertttorcH11gAND两个分总再通常清足IW只要满足两个条件中的一个MrT联反执行局执行局都包了所有的语句和表达式,执行局每以关破字BKGIN开始.在,鼾么格以关该字END结柬.分号分隔每一条话句,使用敝值操作符:=,以关像字EXCEpr1.ON蜡束.如,EXCEPnoN不在:或SE1.tCTINTOJFETCHINTO给每个变量赋依,狄行局部的僧误将在异常钝理邨1决,在执行蜀葬中可以使用另一小P1./SQ1.和序段,这种程序块祓你为假套块所有的3
13、Q1.数究操作语句都可以用于执行同的,P1./81.块不能再屏木上显示$E1.Ecr运句的忖出,$E1.ECT语句必须包括一个INro于或者是势标的一局部,执行局部使用的变量和*量必须首先在声明局部声明.执行局部必须至少包括一条可执行语句,NU1.1.是一条合法的可执行语句,事物段制话句Ceftw1.T和RO1.1.BACK可以在执行局笥使用,数据定义法言(DataDefinitionIangUage)不能在执行Q部中使用,DD1.语句与EXEaJTIIMMEDIArE一龙使用或者是DBMS_SQ1.诋用.执行一个P1./SQ1.牌SQUP1.uS中度名的P1./SQ1.块的执行是在P1./SQ1.次后输人/未执行,如下面的,子所示:dec1.areV.cpercentcnnstantnu11brr:-10:beginu(UteipseiCUm=sh1votm_perTent*b?re