文档详情

Oracle PL SQL 编程手册(SQL大全)

2315****3hhg
实名认证
店铺
DOCX
86.17KB
约88页
文档ID:156151244
Oracle PL SQL 编程手册(SQL大全)_第1页
1/88

Oracle PL/SQL 编程手册(SQL大全) 一、SQLPLUS1引言SQL命令以下17个是作作为语句开头头的关键字::alterddroprevokkeauditggrantrollbback*commit**inserrtselecctcommenttlockupdattecreatenoaudditvaliddatedeleterenamme这些命令必须以以“;”结尾带*命令句尾不不必加分号,并并且不存入SSQL缓存区区SQL中没有的的SQL*PPLUS命令令这些命令不存入入SQL缓存存区@definnepausee#deluit$descrriberemarrk/discoonnecttrunacceptdocummentsaveappendeditsetbreakeexitshowbtitlegetspoollchangehelpsqlpllusclearhhoststarttcolumninputttiminngcomputeelistttitlleconnecttnewpaageundeffinecopy----------2数据库查询询数据字典TAB用户创创建的所有基基表、视图和和同义词清单单DTAB构成成数据字典的的所有表COL用户创创建的基表的的所有列定义义的清单CATALOGG用户可存取取的所有基表表清单select*fromtab;describbe命令描述基表的的结构信息describbedeptselect*fromemmp;selectempnoo,enamme,jobbfromemmp;select*fromdeptorderbbydeptnnodesc;;逻辑运算符=!=或<>>>>=<<=inbetweennvaluee1andvaluee2like%_innulllnotnoin,iisnotnull谓词in和nootin有哪些职员和分分析员selectenamee,jobfromemmpwherejjobin('cleerk',''analyyst');;selectenamee,jobfromemmpwherejjobnotin('cleerk',''analyyst');;谓词betweeen和nootbetweeen哪些雇员的工资资在20000和30000之间selectenamee,job,,salfromempwheressalbetweeen2000and3000;;selectenamee,job,,salfromempwheressalnotbetweeen2000and3000;;谓词like,,notlikeselectenamee,depttnofromempwhereeenamelike'S%';;(以字母S开头头)selectenamee,depttnofromempwhereeenamelike'%K';;(以K结尾)selectenamee,depttnofromempwhereeenamelike'W____';(以W开头,后后面仅有三个个字母)selectenamee,jobfromempwherejjobnotlike'salees%';(哪些雇员的工工种名不以ssales开开头)谓词isnuull,issnotnull没有奖金的雇员员(即commmisioon为nulll)selectenamee,jobfromempwhereccommisnull;;selectenamee,jobfromempwhereccommisnotnull;;多条件查询selectenamee,jobfromemmpwhereddeptnoo=20andjobb!='cllerk';;表达式+-*//算术表达式选择奖金高于其其工资的5%%的雇员selectenamee,sal,,comm,,comm//salfromempwhereccomm>..05*saalorderbbycomm//saldesc;;日期型数据的运运算addtwoodaysto6-Marr-876-Mar-887+2=8-Marr-87addtwoohourssto6-Marr-876-Mar-887+2/24=6-Marr-87and2hrsadd15seconndsto6-Marr-876-Mar-887+15/(224*60**60)=6-Marr-87and15secs列名的别名selectenameeemplooyeefromempwhereddeptnoo=10;(别名:empployeee)selectenamee,sal,,comm,,comm//sal"C/SRATIOO"fromempwhereccomm>..05*saalorderbbycomm//saldesc;;SQL命令的编编辑listorrl显示缓冲区区的内容list4显示当前SL命令的第第4行,并把把第4行作为为当前行,在在该行号后面面有个*。

changeorc用新的内容容替换原来在在一行中第一一次出现内容容SQL>c/((...)//('anaalyst'')/inputoori增加一行或或多行appendora在一行后追追加内容del删除当当前行删除SQL缓缓冲区中的当当前行run显示并并运行SQLL缓冲区中的的命令/运行SQLL缓冲区中的的命令edit把SSQL缓冲区区中的命令写写到操作系统统下的文本文文件,并调用操作系统统提供的编辑辑器执行修改改---------------3数据操纵数据的插入insertintodeptvalues(10,''accouuntingg','neewyork'');insertintodept(dnamme,depptno)values('acccountiing',110);从其它表中选择择插入数据insertintoemp(empnno,enaame,deeptno))selectid,naame,deepartmmentfromolld_emppwhereddeparttmentin(100,20,330,40));使用参数insertintodeptvalues((&depttno,&ddname,,&loc));执行时,SQLL/PLUSS对每个参数数将有提示用用户输入参数对应日期型型或字符型数数据时,可在在参数上加引引号,输入时时就可不用引引号insertintodeptvalues((&depttno,'&&dnamee','&lloc');;插入空值(NUULL)insertintodeptvalues((50,'eeducattion',,null));插入日期型数据据日期型数据缺省省格式:DDD-MON--YYinsertintoemp(empno,,enamee,hireedate))values((7963,,'stonne','007-APRR-87'));系统时间:SYYSDATEEinsertintoemp(empno,,enamee,hireedate))values((7600,,'kohnn',SYSSDATE));数据更新updateempsetjobb='mannager''whereeename=='marttin';updateempsetjobb='marrketrep'whereeename=='saleesman'';updateempsetdepptno=440,jobb='marrketrep'wherejjob='ssalesmman';数据删除deleteempwhereeempno==765;更新的提交commit自动提交方式setauttocommmiton如果状态设为开开,则使用iinesrtt,updaate,deelete会会立即提交。

更新取消rollbacck两次连续成功的的commiit之间的操操作,称为一一个事务-----------------4创建基表、视视图创建基表createtableedept(deptnoonumbeer(2),,dnamecchar(114),locchaar(13)));数据字典会自动动更新一个基表最多2254列表名列名命名规规则:限制第一个字符必须须是字母,后后面可任意(包包括$#_但不能是逗逗号)名字不得超过330个字符唯一某一用户的基表表名必须唯一一,不能是OORACLEE的保留字,同同一基表的列列名互不相同同使用双引号如果表名用双引引号括起来,则则可不满足上上述规则;只有使用双引号号,才能区别别大、小写;;命名时使用了双双引号,在以以后的操作也也必须使用双双引号数据类型:char(n))(不得超过过240字符符)number((n,d)datelong(最最多655336字符)raw(二进进制原始数据据)空值处理有时要求列值不不能为空createtableedept(deptnoonumberr(2)notnull,,dnamecchar(114),locchaar(13)));在基表中增加一一列alterttabledeptadd(heeadcnttnumbeer(3)));修改已有列属性性alterttabledeptmodifydnameechar((20);注:只有当某列列所有值都为为空时,才能能减小其列值值宽度。

只有当某列所有有值都为空时时,才能改变变其列值类型型只有当某列所有有值都为不空空时,才能定定义该列为nnotnull例:alterttabledeptmodiffy(locchar((12));;alterttabledeptmodiffylocchar((12);alterttabledeptmodiffy(dnammechar((13),llocchar((12));;创建视图createviewmanaggersasselectenamee,job,,salfromemmpwherejjob='mmanageer';为视图列名取别别名createviewmydeppt(personn,titlle,sallary)asseleectenamee,job,,salfromemmpwhereddeptnoo=10;withchheckoptioon选项使用withcheckkoptioon,保证当当对视图插入入或更新数据据时,该数据必须满足足视图定义中中selecct命令所指指定的条件。

createviewdept220asselectenamee,job,,sal,ddeptnoofromemmpwhereddeptnoo=20withchheckoptioon;在做下述操作时时,会发生错错误updatedept220setdepptno=330whereeename=='wardd';基表、视图的拷拷贝createtableeemp2asseleect*fromemp;基表、视图的删删除droptaable表名dropviiew视图名--------------5SQL*PPLUS报表表功能SQL*PLUUS的一些基基本格式命令令columndeptnnoheadiingdeparrtmenttcolumnenameeheadiingnamecolumnsalheadiingsalarrycolumnsalformaat$99,9999.000ttitlesampllereporrtfor|hhitechhcorpbtitlestricctlyconfiidentiialbreakoondeptnnocomputeesumofsalondeptnnorun表头和表尾ttitlesampllereporrtfor|hhitechhcorpbtitlerighttstricttlyconfiidentiial“|”表示换行行,结尾不必必加分号选项有三种:lleftrighttcenteer使用TTITLLE,系统将将自动地在每每页的顶部显显示日期和页页号。

TTITLETT和BTITTLE命令有有效,直至重重新设置表头头或表尾,或或退出SQLL*PLUSS下面命令使标题题语句失效TTITLEOFFBTITLEOFF列名column命命令定义用于于显示列名若名字为一个单单词,不必加加引号columnenameeheadiingemplooyeecolumnenameheadiing'emplloyee||name''(|为换行)取消栏定义columnenameeclearr列的格式columnenameeformaatA15columnsalformaat$9,9999.99columncommlikesallike子句,使使得某一列的的格式参照另另一列格式,它它拷贝列名及及其格式控制记录显示分分组顺序breakoondeptnno(不显示重复值值)selectdeptnno,enaamefromemmporderbbydeptnno;(ORDERBY子句用用于控制BRREAK)显示为10clarrkniller20smitthscott30alleenblake每次只有一个BBREAK命命令起作用,但但一次可以在在多个列上使使用BREAAK命令breakoon列名1on列名2记录分组breakoondeptnnoskip2selectdeptnno,enaamefromemmporderbbydeptnno;每个deptnno之间空两两行clearbbreak(取取消BREAAK命令)breakoonpage(每每次从一新页页开始)breakoonreporrt(每次从从一新报表开开始)breakoonpageonreporrt(联合使使用)分组计算breakoondeptnnoskip2computeesumofsalondeptnno计算每个部门的的工资总和skip子句使使部门之间的的信息分隔开开其他计算命令computeeavgofsalondeptnno(平均值值)count非非空值的总数数MAX最大值值MIN最小值值STD标准偏偏差VAR协方差差NUMBER行数使computte命令失效效一旦定义了COOMPUTEE,则一直有有效,直到关闭COMPUUTE(cllearcompuute)SQL/PLUUS环境命令令show选项项(显示当前参数数设置情况)showalll(显示全全部参数)设置参数set选项值或开关setauttocommmitonSET命令包括括setauttocommmit{off||on|immmediaate}(自动提交,OOFF缺省)setechho{off||on}(命令文件执行行,是否在终终端上显示命命令本身,OOFF缺省)setfeeedbackk{off||on}(ON:查询结结束时,给出出结果,记录录数的信息,缺缺省;OFF:无查询询结果,记录录数的信息)setheaading{off||on}(ON:列的头头标在报表上上显示,缺省省;OFF::不在报表上上显示)setlinnesizee{n}一行显示的最大大字符数,缺缺省为80setpaggesizee{n}每页的行数,缺缺省是14setpauuse{off||on|teext}(ON:当报表表超过一页时时,每显示一一屏就暂停显显示,等待用用户打回车键键,再接着显显示;OFF:页与页页不停顿,缺缺省;texxt:页与页页停顿,并向向用户提示信信息)SETBUFFFERbuffeer设置当头的命令令缓冲区,通通常情况下,SSQL命令缓缓冲区已为当当前缓冲区。

由于SQL命令令缓冲区只能能存放一条SSQL命令,所以可用其它缓缓冲区来存放放SQL命令令和SQL**PLUS命命令经常用到的设置置可放在loogin.ssql文件中中SETNULLLsetnulll'nodata''selectenamee,commmfromemmpwhereddeptnoo=30;把部门30中无无佣金雇员的的佣金显示为为“NODATA”setnulll是SQLL*PLUSS命令,用它它来标识空值值(NULLL),可以设设置为任意字字符串存盘命令SAVVEsave文件件名input1selecctempnoo,enamme,jobb2fromemp3whereejob=''analyyst'savereesearcch目录中会增加一一个reseearch..sql文件件编辑命令EDIITeditEDIT编辑当当前缓冲区中中的内容编辑一个文件editreesearcch调入命令GETTgetressearchh把磁盘上的文件件内容调入缓缓冲区,并显显示在屏幕上上,文件名尾尾不必加.ssql。

START命令令运行指定的文件件startrresearrch输出命令SPOOOLspoolttryfille不仅可以使查询询结果在屏幕幕上显示,还还可以使结果果存入文件停止向文件输出出spoolooff把查询结果在打打印机上输出出,先把它们们存入一个文文件中,然后不必使用SSPOOLOFF,而而用:spoolooutSPOOLOOUT关闭该该文件并在系系统缺省的打打印机上输出出制作报表举例edittrryfileesetechhooffsetauttocommmitonsetpaggesizee25insertintoemp(empnno,enaame,hiiredatte)values((9999,,'geigger',ssysdatte);insertintoemp(empnno,enaame,deeptno))values((3333,,'samsson',220);spoolnnew_emmpselect*fromempwhereddeptnoo=20ordepttnoisnull/spoolooffsetauttocommmitoff用start命命令执行这个个文件---------6函数字符型函数initcapp(enamme);将eename中中每个词的第第一个字母改改为大写。

如:jacksmithh--JacckSmithhlength((enamee);计算字字符串的长度度substr((job,11,4);其它lowerupperleast取取出字符串列列表中按字母母排序排在最最前面的一个个串greatesst取出字符串串列表中按字字母排序排在在最后的一个个串日期函数add_monnth(hiiredatte,5)在雇佣时间间上加5个月月month_bbetweeen(syssdate,,hireddate)计算雇佣时时间与系统时时间之间相差差的月数next_daay(hirredatee,'FRIIDAY'))计算受雇日日期之后的第第一个星期五五的日期例selectenamee,sal,,next__day(ssysdatte,'FRRIDAY'')as_offfromemmpwhereddeptnoo=20;(as_of是是别名)如果不用to__char函函数,日期在在ORACLLE中的缺省省格式是'DDD_MONN_YY'to_charr(datee,dateepictuure)selectenamee,to_cchar(hhiredaate,'DDyMondd,yyyyy')hireddfromemmpwhereddeptnoo=10;to_datee(字符串,,格式)insertintoemp(eempno,,enamee,hireedate))values((7999,,'asmss',to__date(('07033870833000',,'MMDDDYYHHMMISS')));日期型数据的格格式dd12dyfridayfriidayddspthtwelffthmm03monmarrmonthmmarchyy87yyyy19987例Mar12,,1987'Mondd,yyyyy'MAR12,,1987'MONdd,yyyyy'ThursdaayMARCHH12'DayMONTHHdd'Mar1211:000am'Monddhh:miiam'Thu,theetwelffth'Dy,""the"dddspthh'算术函数least(vv1,v2))selectenamee,empnno,mgrr,leasst(emppno,mggr)lownuumfromemmpwhereeempno00trunc(ssal,0))取sal的近似似值(截断)空值函数nvl(v1,,v2)v1为列名,如如果v1不是是空值,nvvl返回其列列值。

v1为空值,返返回v2的值值聚组函数selectsum(ccomm)fromemmp;(返回一个汇总总信息)不能把sum用用在seleect语句里里除非用grroupby字符型、日期型型、数字型的的聚组函数minmaxxcountt可用于任何何数据类型selectmin(eename))fromemmp;selectmin(hhiredaate)fromemmp;selectmin(ssal)fromemmp;有多少人有工作作?selectcountt(job))fromemmp;有多少种不同的的工种?selectcountt(disttinctjob)fromemmp;countddistinnct计算某一字字段中不同的的值的个数其它聚组函数(只只用于数字型型数据)avg计算平平均工资selectavg(ssal)fromemmp;stddev计算工资的的平均差selectstddeev(sall)fromemmp;sum计算总总工资selectsum(ssal)fromemmp;groupbby子句selectdeptnno,summ(sal)),avg((sal)fromemmpgroupbbydeptnno;按多个条件分组组每个部门的雇员员数selectdeptnno,couunt(*))fromemmpgroupbbydeptnno;每个部门的每个个工种的雇员员数selectdeptnno,jobb,counnt(*)fromemmpgroupbbydeptnno,jobb;满足条件的分组组(where是是针对sellect的,hhavingg是针对grroupby的)哪些部门的工资资总和超过了了9000selectdeptnno,summ(sal))fromemmpgroupbbydeptnnohavingsum(ssal)>99000;select小小结除去职员,哪些些部门的工资资总和超过了了8000selectdeptnno,summ(sal))fromemmpwherejjob!=''clerkk'groupbbydeptnnohavingsum(ssal)>88000orderbbysum(ssal);----------7高级查询等值联接selectempnoo,enamme,jobb,emp..deptnno,dnaamefromemmp,depptwhereeemp.deeptno==dept..deptnno;外联接selectenamee,deptt.depttno,loocfromemmp,depptwhereeemp.deeptno((+)=deept.deeptno;;如果在deptt.depttno中有的的数值,在eemp.deeptno中中没有(如ddeptnoo=40),则作外联接时,结结果中会产生生一个空值自联接:同一基基表的不同行行要做联接,可可使用自联接接指出每个雇员的的经理名字selectworkeer.enaame,maanagerr.enammemanaggerfromemmpworkeer,emppmanaggerwherewworkerr.mgr==managger.emmpno;非等值联接哪些雇员的工资资属于第三级级别selectenamee,salfromemmp,sallgradeewhereggrade==3andsallbetweeenlosallandhisall;(基表salggrade::gradeelosallhisall)集合运算行的连接集合运算把2个个或多个查询询结果合并为为一个union-ssetunionnRowsofffirsttqueryyplusofseconndqueryy,lessdupliicaterowsinterseect-seetinterrsectiionRowsboothqueriieshaveincommoonminus-ssetdiffeerenceerowsunniquetothefirsttqueryy介绍几个视图accounttviewenamessaljobsalesvviewenamessaljobresearcchviewenamessaljobunion运算算返回一个查询结结果中有但又又不重要的行行,它将基表表或视图中的的记录合并在在一起所有部门中有哪哪些雇员工资资超过20000对应列的数据类类型必须相同同selectenamee,salfromacccounttwheressal>20000unionselectenamee,salfromreesearcchwheressal>20000unionselectenamee,salfromsaaleswheressal>20000;interseect运算返回查询结果中中相同的部分分各个部门中有哪哪些相同的工工种selectjobfromacccounttinterseectselectjobfromreesearcchinterseectselectjobfromsaales;minus运算算返回在第一个查查询结果中与与第二个查询询结果不相同同的那部分行行记录。

有哪些工种在财财会部中有,而而在销售部中中没有?selectjobfromaccouuntminusselectjobfromsaless;子查询slecteename,,deptnnofromemmpwhereddeptnoo=(selecttdeptnnofromemmpwhereeename=='smitth');多级子查询selectenamee,job,,salfromemmpwherejjob=(selecttjobfromemmpwhereeename=='clarrk')orsal>>(selecttsalfromemmpwhereeename=='clarrk');多个基表与子查查询selectenamee,job,,salfromemmp,depptwherelloc='nnewyork''andempp.depttno=deept.deeptnoandsall>(selecttsalfromemmpwhereeename=='scottt');子查询中使用聚聚组函数selectenamee,hireedatefromemmpwherehhiredaate=(selecttmin(hhiredaate)fromemmp);--------------8授权系统权限DBA所有权权限RESOURCCE注册,创建建新的基表CONNECTT,注册,查查询只有DBA才有有权创建新的的用户grantcconneccttoscotttidentiffiedbytigerr;DBA或用户自自己可以改变变用户口令grantcconneccttoscotttidentiffiedbyleopaard;基表权限1有两种方法获得得对基表操作作的权限创建自己的基表表获得基表创建用用户的许可grantsselectt,inseertonemptoscottt;这些权限有selectinserrtupdattedelettealterrindexx把所有权限授于于他人grantaallonemptoscottt;同义词select*fromsccott.eemp创建同义词为用户alleen的EMPP基表创建同同义词empployeeecreatesynonnymemplooyeeforalllen.emmp基表权限2你可以使其他用用户有这样的的权力,即其其他用户可以以把你的基表表权限授予他他人grantaallonemptoscotttwithgrrantoptioon;收回权限系统权限只有有被DBA收收回基表权限随时时都可以收回回revokeinserrtonempfromsccott;----------9索引建立索引createindexxemp_eenameonemp((enamee);删除索引dropinndexemp_eename;;关于索引只对较大的基表表建立索引(至至少50条记记录)建立索引之前插插入数据对一个基表可建建立任意多个个索引一般是在作为主主键的列上建建立索引建立索引之后,不不影响SQLL命令的执行行建立索引之后,OORACLEE自动维护和和使用索引保证数据唯一性性提高执行速度的的同时,索引引还可以保证证每个记录中中的每个列值值是不重复的的。

createuniquueindexxemp_eempnoonemp((empnoo);---------练习和答案有没有工资比奖奖金多的雇员员?如果有,按按工资的降序序排列如果有两个以上上的雇员工资资相同,按他他们的名字排排序selectenameeemplooyee,ssalsalarry,commmcommiisionfromemmpwheressal>coommorderbbysaldesc,,enamee;列出有关雇员姓姓名、奖金占占收百分比的的信息要求显示时列名名意义明确,按按雇员姓名排排序,不包括括奖金未知的的雇员selectenameeemplooyee,((comm//(commm+sal)))*1000incenntivefromemmpwhereccommisnotnullorderbbyenamee;在chicaggo(部门330)工作的的所有雇员的的工资上涨110%updateempsetsall=1.1**salwhereddeptnoo=30;updateempsetsall=1.1**salwhereddeptnoo=(sellectdeptnnofromdeeptwherelloc='cchicaggo');为hitechh公司新建一一个部门,编编号为50,其其它信息均不不可知。

insertintodept((dnamee,depttno)values(('facllitiess',50));创建视图,三个个列名,其中中不包括职员员信息createviewemplooyee(""emplooyeename"","employyeenumbeer","employyeejob"))asseleectenamee,empnno,jobbfromemmpwherejjob!=''clerkk';制作工资报表,包包括雇员姓名名、受雇时间间(按星期计计算),工资资和部门编号号,一页显示一个部部门的信息,每每页尾,显示示该页的工资资之和以及受受雇时间之和和,报表结尾处,显显示所有雇员员的工资总和和以及受雇时时间总和,工资按美元计算算,受雇时间间按星期计算算,每页的上上方应有标题题ttitle'servvice'breakoondeptnnoonpageonreporrtcomputeesumofsalondeptnnocomputeesumofsalonreporrtcomputeesumofserviice_leengthondeptnnocomputeesumofserviice_leengthonreporrtcolumnsalformaat$99,9999.000columnserviice_leengthformaat9999selectdeptnno,enaameemplooyee,((sysdaate-hiiredatte)/7serviice_leength,,salfromemmporderbbydeptnno;制作报表,包括括雇员姓名、总总收入和受佣佣日期,且:姓名的第一一个字母必须须大写,雇佣佣日期格式为为MM/DDD/YYYYY,总收入包括没有有奖金的雇员员的总收入,姓姓名按字母顺顺序排列。

col"hiiredate""formaatA12col"emmployeee"formaatA10col"coompenssationn"formaat$99,9999.000selectinitccap(enname)"emplloyee"",(sal+nvvl(commm,0)))"comppensattion",,to_charr(hireedate,,'MM/DDD/YYYYY')"hireedate""fromemmporderbbyenamee;列出有超过7个个周边国家的的国家名字和和面积selectnatioon,areeafromnaationwhereccodein(selecttnatioon_coddefromboordergroupbbynatioon_coddehavingcountt(*)>77);列出所有面积大大于等于日本本的岛国的国国名和人口selectnatioon,poppulatiionfromnaation,,bordeerwhereccode=nnationn_codee(+)andnattion_ccodeisnullandareea>=(selecttareafromnaationwhereuupper((natioon)='JJAPAN'');列出所有边界在在其它国家中中的国名,并并且显示其边边界国家名字字。

breakoonnatioonselectnatioon1.naation,,nation22.natiionborderrin_coountryyfromnaationnatioon1,boorder,,natioonnatioon2wherennationn1.codde=borrder.nnationn_codeeandborrder.bborderr_codee=natiion2.ccodeorderbbynatioon1.naation;;------------------------PL/SQL2PL/SL的块结构构和数据类型型块结构的特点嵌套begin......begin......exceptiion......end;exceptiion......end;标识符:不能超过30个个字符第一个字符必须须为字母其余字符可以是是字母,数字字,$,_,或或#不区分大小写形形式如果用双引号括括起来,则字字符顺序可以以任意排列,并并区分大小写写形式无SQL保留字字数据类型数字型:整数,实数,以以及指数字符串:用单引号括起来来若在字符串表示示单引号,则则使用两个单单引号字符串长度为零零(两个单引引号之间没有有字符),则则表示NULLL字符:长度为1的字符符串数据定义语法标识符[常数>>数据类型[NNOTNULL>>[:=PLL/SQL表表达式>;':='表示给给变量赋值数据类型包括数字型nummber(77,2)字符型chaar(1200)日期型datte布尔型booolean(取取值为truue,fallse或nuull,不存存贮在数据库库中)日期型anniverrsarydate::='05--JUL-995';projectt_comppletioondate;;布尔型over_buudgetbooleeannotnull:==falsee;availabblebooleean;(初始值为NUULL)%type类型型匹配books_pprinteednumbeer(6);;books_ssoldbook__printted%tyype;managerr_nameeemp.eename%%type;;变量赋值变量名:=PLL/SQL表表达式numvar::=5;boolvarr:=truue;datevarr:='111-JUN--87';字符型、数字型型表达式中的的空值null+<数数字>=nuull(空值值加数字仍是是空值)null><数数字>=nuull(空值值与数字进行行比较,结果果仍是空值)null||''字符串'=='字符串''(nulll即'')(空值与字符串串进行连接运运算,结果为为原字符串)变量作用范围标识符在宣言它它的块中有效效标识符如果不在在子块中重新新定义,则在在PL/SL块的所有有子块中同样样有效重新定义后的标标识符,作用用范围仅在本本子块中有效效例declareee_messchar((80);begin/*子块1*//declareev1numbber(4));beginselectempnoointov1fromempwherejjob='ppresiddent';;exceptiionwhentooo_manny_rowwstheninsertintojob_eerrorssvalues(('moreethanonepresiident'');end;/*子块2*//declareev1numbber(4));beginselectempnoointov1fromempwherejjob='mmanageer';exceptiionwhentooo_manny_rowwstheninsertintojob_eerrorssvalues(('moreethanonemanagger');;end;exceptiionwhenotthersthene_mess::=subsstr(slerrmm,1,800);insertintogenerralerrorrsvaluees(e_mmess。

下载提示
相关文档
正为您匹配相似的精品文档