《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./S
14、Q1.次后输人/未执行,如下面的,子所示:dec1.areV.cpercentcnnstantnu11brr:-10:beginu(命名的程序与俄名程序的执行不同.执行命名的程序块必须使用execute关键字:createorrep1.aceprocedureupdatec。IaigiOnCidOP1.Innur&r.vjerventJnnuber1.*rxcdurecrcu1.edSQOexccuteupdatecccni!tsion(iO.IS):PtSQ1.pxcedujvsuccesfu1.1.jv111c1.cd.S(M.如果在另一个命名程序块或SE名程序块中执行这个程序,那么就不售
15、曼EXECUTE关进字.dec1.areV_dcptFMIbEbeginse1.ectdeptnoInU1.vd?ptfrccrpatrejob-,PMS1.MM*ufdate.oPVS控结相控制结构控司P1./SQ1.短序流程的代码行.P1./SQ1.支持条件控相和循环控制结构.语法和用途IP.THEN;IPconditionTHENStai0ent81:SIamHn82;Ba)IFIF语句判断条件CondiIiOn是否为TRIE.如果是时执行THEN后五的港句,如果smH1.ib)and(acIhenS:-ase1.seg:=b;Scgthen-c:endifendIfIF.THEN.E1
16、.SIF语法:IFcondition!11三NStaterent1.E1.SIFcondition1II11Xbta1.dwc1.2;E1.S1.FCoftCnH(m3THENstatcrent3:3tate*nt4;EXDIF:statent5:如果条件Conditinn1.为TRIE则执行SU1.IemCnt1.然后执行cnc111.5,否则利所Sndition2是否为7&UE,若为TRUE则执行SstaICrH2,然后执行SIQIEOnt5,对于COnditiOn3也是相同的.如果Condi1.iOn1.condition2.COrU1.i1.ion3都不成立,却么格执行然后执行stat
17、eent5.环控制俯环控制的泉木形式是1.oOP滑句,1.P和EM)1.OOP之间的话旬将无泯次的执行.1.OOP语句的语法如下:1.(M)Pstatements;END1.OOP1.O(W和EW1.OOP之何的语句无限次的执行里嫁是不行的,小么在化用1.OoP语句监必复倒用EXH语句.还制循环结束.例如:x:-100:1.OCPK:=XMOiIFXicTHENEXIT1EIF11M)1.oOMY:=X;此时丫的值是1010.EXIT川EX语句将结谏花环.如果条件为IRUE,则结束循环。X:TOO:1 .(WX:-X*i0;EXITIHENXI(MXX:=X*10;EXD1.OOP:Y:=X;
18、IHI1.E.1.OOPW1I1.E.1.OOP有一个条件与循环相联系,如果条件TRIE.则执行循环体内的语句,如果结果为FA1.SE.则结束循环。Xr=100;MII1.EXrt11mge+1.JfiHCndrange.如果range等于end.range,那么1.环将执行一次O0果使用了REVERSE关键字.那么急图将是一个降序.X:TOO:FWcoumerIn1.IO1.oopx=*0;endIonp如果要退出for循环可以使用EXn语句.用户可以使用标芟使程序获得更好的可读住.程汴块或循环都可以被标记.标芟的形式是.标记程序块OUREIIfiG1.NEXCEPTIONEM)1.abe1
19、.nan?标记循环O1.OCPO1.oopOh3EXITuter_)oopVHEXv.coni1.d51.EXD1.OOPinner1.oop;EXO1.OOPcer1.oop:GOTO4?语法:GOTO1.ABE1.;执行GOTO语句后,控制会立即转到由标签标记的话句.P1./SQ1.中MGoIU语句有一些限,财于块.循环.IF语句而吉.从外层睨转到内层是非法的.X!-)00:RMVCOINTERIN1.101.OOPIFVCaMERTTHIiNGOTOndof1.oopEM)IFXj=XHOiOM1.1.EM)IwY:-X:注京,NU1.1.是一个合法的可执行语旬*程存块的内茄可以有另一个
20、程序块这种情况称为嵌於.嵌套要注京的是变1,定义在最外部程序块中的支量可以在所有子块中他用.如果在子块中定义了与外部程序块变量相同的变置名,在执行子块时将使用子块中定义的变量,子块中哭义的变量不能被父块引用。同样GOTO诒句不能由父块跳转道子块中,反之如是合法的(ttTERMX1.CDDEC1.ARe.WVBCTIXTIiTeRiBMMm乎1XTECER:BEC1.N-A_X1.!yRandBX1.BERawse1.1.ab1.ehereODeC1.ARECWMBWXTIRBNnffiERNVVIO(20)BHGINC-X1.MfIKK;C三JK1.TWIf1.1.OC1.BX1.tftER:
21、EXDSVBBiOCMEXDOV1.B1.OCM小,我们在这U文告中介汨了P1./SO1.的基玷语法以及如何使用P1.1.谱寸设计和运行P1./SQ1.桎序块,并将P1./SQ1.程序壑合列Orac1.e效劳器中.虽然PUSQ1.程序作为功能块或入OraC1.C数格库中,但P1./SQ1.与ORAC1.E数据库的紧密结合使得外耒战多的OrWCk敛茏库管理员和开发人员开始使用P1./SQ1.。全面探讨P1./SQ1.的攵合数据类型P1./SQ1.有两科复合效据结构:记录和臬令.记录由不同的城里成,集合由不同的元素组成,在本文中我f】将讨论记录和第合的关里、您样定义和使用记录和集合.P1./SQ1
22、.记录记录是P1./SQ1.的一种复合数据结构.SCaHr数据类型和其他数窕失至只要转单的在包一级进行旗定义,但复合数据关54在使用前必然被定义.记录之所以被存为复合豌搭类。是因为他由城这种由数究元素的爱辑祖所双成。域可以是SeaIar饮抿笑支或其他记录类31,它与C语言中的结构相似,记录也可以看成表中的散揖行,域则相当于表中的列,在表和曲拔表(机国或查询中丰售容易定义和使用,行或记票中的每一列或琉都可以按引用或单独状值,也可以迎过一个单独的话句引用记录所有的域.在存鳍过程贰西数中记票也可能有。数。创立记最在P1./眦中有两冲定义方式:皇式定义和粒式定义。一旦记录核定义后,声明或倒立定义类型的
23、记票变量.然后才是使用该变量.随式声明是在基于表的f构成交询上使用*TYPE属性,随式声明是一个更强有力的工具.这是因为这牌散据父量是动态创立的.J1.式定义记录显式定义记录是在P1./SQ1.程序块中创立记录受t之前在声明局部定义.使用type命令定义记录,坊后在创立该记录的安量.语法如下,TWErecon1.1.ypeISHI-CORPie1.d.fefini1.ionIisOifie1.ddefinition1.ist是由逗号分隔的列袤.域定义的语法如下:ie1.d.un?duta1.yptandixe:XOWU.)(I:=IW.W1.TIdefau1.tva1.c1.域名必然服从与表或
24、列的命名规则相同的命名规则.下面我们看一个例子:IM=1.CARETYI5Estck-quterecISRECWtD(%yix1.stock.sjnb1.%TTI,E.bidN1.iVBER(10.4).kNUVBt(10.4).vo1.uMMREHWTXuX:=0.cxchongcYARattR2(6)DEFA1.1.TXS11W):rua1.Jiny_quo1.estick_qustdr.hn1.dnRFKCMprtfo)1.oMIEJEuccctn1.nbr三*acc1.-f,xnctininfoxactionscu!*WWTYPE;variab1.e有一些P1./SQ1.指令在使用隐式
25、定义记录时没有使用IMI产E属性.比方游标FoR循环或触发赛中的:O1.d和:rw记录.眦1.CAREUiBSORXac1.i_cur!SSH1.BCTaction.tDriixp.bo1.dingFROMportfo1.iosIHEJjeccctnbr=37BEGINHWIZ1.CIkGJaCinxactionscur1.(WIFactionsrcc.bo1.dinj-Oftt1.THENnotifyshareho1.der;EXDIF:EXD1.OOP:使用记录用户可以给记录蛾值、件值传递蛤其他程序.记录作为一种矍合数据转构急味作他有苒个馈次可用.用户可以引用壑个记录,使用SeIeCtin
26、t。我fetch转传用有浓,也可以为蜃个记录传递给一个程序或桥所有域的值H给另一个记录.在更依的层次,用户可以处理记或内华粳的施,用户可以给单独的琉或值或者在华被的城上运行布尔表达式,也可以将一个或更多的城传递另一个程序。引用记录记录由域组成.访问记录中的域使M点(.)符号,我们使用上而的倒子看管M1.XAREIYPEs1.1.c.recsBEGINrva1._tin?_cktui1.bid_skc:=1.OOT;rca_tic_dctui1.quote.xIur:-156700:Ioffquote(rea1.tinedotai1.quote):*记录鼠值给记录或记录中的城赋值的方法有几种,可
27、以笠用SE1.ESINn)或FEra1.绐整个记票或单独的诚或值,可以件整个记票的值班绐其他记票,也可以通过给年个城票位来珞到记录,以下我们通过实例讲解与一种就慎方法,k使用SE1.EeTINTO使用SE1.EerINTo的记录就笛雯将记票或域放在IVn)子串中,JNTO子串中的变t与SE1.EC7中列的13置F对应。;OW1.AREVxkJnfo1.tHxk和WTYPE;stockinfo2SitOCk*TYPE:BEC1.NSIi1.fiCTsynbo1.oxchnncIXTO8toc.8yx*).3i?INTOvariab1.e:我们改写上市的例子,WieUREC1.RSORstock.
28、cur(sybo1.-inYAKHR2!SSiiIinsytix)1.cxchanffe.beftindateFfiOMstockMNIiJESyrixd=UFFER的rixdin);stockinfostockcurVWTYHBEGINOfBstockurCORa.*):PIiTt1.IstockcurINTOs1.ockinfo:使用K值谙句将要个记录复制给另一个记录是一项*”有用的技术不过记录必级精确地被声明为相同的类型,不能是势于两个不同的NPE语句来获得相同的结构.例:展CIAREIYPE8tock_quote_rec($REO*GfydxdS1.ocktf.?nbo1.TVPB.b
29、idNIIVBER(10.4“knubcr(IO,4.voueMMfohTY1.fstockquotetooISR1.i1.XeD(yix1.stocks.11bo1.%1.VPE.bidXVViJER(IOJ).asknutber(10.O.vo1.uicUMB1.承一这两小记录打上去是一惮的,世实际上是不一样的1.xk_uice1.wks.qui1.e_recistock.to5tocks_qunte_rcc:一达西小城4电闭的数琴英必和大小tt1.xu1.sot11dcj5100|一与8100卜78是不同的数克卖变IUiG1.Nstockone.mythoiz-orc:3t,one.w1
30、.uw:=121500:81.xk,t*=81.k=8iock,one.sy1.;tft(k.u1.savo1.unc三1.ock,fne.%x1.u:记录不能用于INSERT语句和将记录直捷用于比较,下面两片情况是华深的:INSERTIyrOstocksVA1.UES(stock_record);和IFs1.ock_rsort-rw(8toek*vIHEN,可以使用效格率对象.家转隹对象可以使用。Her或MP方决定义,允许OraC1.e对复合数据类型进行比较.关于效据库M象的讨论已羟爬袍了本文的花BJ.要讲俄了解我究生对就.可以Jt贸。ECIC手册。P1./SQ1.M集合与其他谱皆中的数组相
31、似,在ORAC1.E7.3及以前的版本中只右一种集合杯为P1.ZSQ1.表.这钟类里的集合依然保存.就是索支(INDEXBY)衣,与记录相似,集合在定义的时候必须使用TYPE语句,然后才是包立和使用这种笑51的变量.P1.JSQ1.向三种类型的隆合.IndCX-by表,嵌套表VARRAY这三和突空的集合之同由许多老并.包打敌格褥定.(sparsity).量据虞中的存储耗力都不相同.毋定涉及到集合中元素数量的限制.YARRAY集合中的元素的数量是有R1.JndeXhy和联套表则是没有未旧的.稀珑性描述了复合的下标是否有间隔.1.ndexjy表总是稀筑的.如果元素被射除了找本表可以是林版的.但VA
32、KRAY共餐的集合延是紧宙的,它的下标之间没有间隔.JndCXJ1.y表不能存储在数据库中.但嵌套表和YARRAY可以被存储在数究库中。虽热这三种美期的集合有艮亲不同之处,但他们也由很多相似的地方:.都是一堆的关似就组的结构.就有内飕的方法.访何由或分隔IndeX-by表IndC1.by表集合的定义语法Sp下:TYPEtypo.naw1$TAB1.EOFe1.wwntJy时NOTN1.1.1.1.(M)EXBYBHARYJSTKHGE;这里而W要的关键字是Iw)EXBYB1.NARyjXTERGET.没有这个关5(字.行么臬合将是一个段套表.CkMntjyPr可以是任何合法的P1./SQ1.数
33、据类型,包若:P1.S1N7EGER.SIGVrYPE.和BOO1.EAN.其他的臬合类型对数据尊的致宠类型都有限到,但IndeXby表不能存错在数据建中,所以没有这些限利.一旦定义了indexby表.就可以向创立其他文呈那件创立indcx_by表的变Jt:DECURETYKytbo)tabtypISIAB1.E(IFV1Ui11IR2(5IMKXBYBINARYINIBGHi;syri)taby4)tp:BKG1.N*钱春表非第英似亍IndeXby表,创立的语法也祚黑相似.使用TYPE语句,只是没有即EXBYB1.XARY1.NTEGER子事.TYPEIyPjniUnCISTAB1.EOFC
34、1.emCnJtyPCNOTNU1.1.NOTNiJ1.1.选项要求集合所有的元素都要有值,e1.eroenJtype可以是一个记录,但是这个记录只能使用标量数城类型字段以及只用于数匏库的数据炎型不铤艮P1.SXTBGER.BOO1.EANiftSI(MYPE).诙套表和YARRAY新能作为列存储在敦据库表中.所以柒合自身而不是单个的元京可以为NU1.1.,ORA(IE你这肿要个合为NU1.1.的为,自动谀置为NU1.1.Etonica1.1.yNU1.1.)”以区别元素为N1.1.1.的情况.当集合为MI1.1.时,即使不会产生异第,用户也不能引用集合中的元素。用户可以使用ISNiJ1.1.
35、猱作符检洌集合是否为Nt1.u存储在一个数据库中的强杳表并不应表中的其它It并存放在同一个新第块中,它们实际上祓存放在第二个表中.正如没有Orderby子旬Se1.Mt语句不能保证返回任何有党序的豌熔,从欹壳皮中率可的宏套表也不保江元米的股汴,由于集合蜿据是自俄存储的.封于大型集令族杏素是一个不拓的选界。VARRAYVARRAV或数据变量却有元米的眼就。套超他集合一样VARRAY定义仍然使用TYPE语句.但关键字VARRAY或VARRYINGARRAY诉ORAC1.E这是一个VRRAY合.TYKtypeaISWABJMY1.VAJrtIJiGAWtAY)nnxsize)OFMenen1.JHW
36、WTW1.1.峭XaZe是一个整效,用千标示VARRAY隼台拥有的最多元亲效目,VARRAY集合的元素版t可以低于11axMze,但不能越过碉x_3izcc1.gcn1.ypc是一维元去的敷据类型,如果CIEantJyPC是记票.加么这个记录只能使用标量数据字收(与设套标相似).MTrKi1.1.子中表示集合中的每一个元素蒜必须有也.与*蠢表相似.VARRAY能修百动为NV1.1.可以偻用ISNU1.1.捶作籽逆行检雳.与嵌套表不同的是,当YARRY存储在数据库中时与表中的其他数据存放在同一个效据块中,正段列的柞序保存在表的361.ECT中一样元素的依序保存在VARRAY中。同样由于集合是在故
37、存W的,YARRAY很适合于小旦集合.*.记录一样,集合可以在两个层面上使用:.操作整个集合.访问集合中蚪单个元素第一种情况使用集合名.第二种情况使用下标:Co1.1.ection(Subecript)indexby表的下标是再方的要数.可以为正也可以为负.范阳是:-21474836472147483617.嵌套表和VARRAY表示元索在集合中的位置,用户保双灵活设计下标,这是因力:.廉杰表开始要紧密的(相对于秋检).YRRY始终保持岐帝.这两种集合的下标都由1开始初始化、除、引用集合使用集合之前必领要初始化,封于IndCXJy表枷羚化要自动进行的,但是月于鞍杰表和YARRAY就必须依用内陇的构造函数.如果Jt新调用,嵌杰表和VARRAY自动JtN1.I1.1.,这不只是元索*NU1.1.,而是曼小集合置刈1.1.妙集合内的元素R值布要使用下标符号.将一个集台的值欧给另一个集合,只需要向单的使用取值操作芹.Indexby集合初始化是最向学的,只要涉及其中的一个元未集合就被初始化T。桃:眦QARETYFf