欢迎来到天天文库
浏览记录
ID:42389635
大小:446.38 KB
页数:22页
时间:2019-09-14
《第13章 Oracle高级阶段编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Oracle高级阶段编程一、PLSQL编程PLSQL块是结构化设计程序语言,是在SQL语言上发展的一种应用,可以集中的处理各种复杂的SQL操作。Ø组成declareinumber;--变量的定义begin--SQL语句操作处理exception--异常处理end;Ø简单PL/SQL编写① 变量定义变量的定义,Oracle语言采用declare进行声明数据类型可以采用Oracle内置的数据类型。② 变量赋值变量的赋值采用【:=】③ 结果输出dbms_output.put_line('i的值'
2、
3、i);④
4、 异常处理declareinumber;--变量的定义begin--SQL语句操作处理i:=1/0;DBMS_OUTPUT.put_line('除数能为0');exceptionwhenZERO_DIVIDETHENDBMS_OUTPUT.put_line('除数不能为0');--异常处理end;相当于JAVA中try{i:=1/0;DBMS_OUTPUT.put_line('除数能为0');}catch(Exceptione){DBMS_OUTPUT.put_line('除数不能为0');}① 变量
5、绑定Oracle自身提供的工具采用的方式是&a,但是采用PL/SQLDEV工具变量绑定的方式:a.a表示变量名。对于数据库操作变量采用方式:selectenameintoename_cpfromemptwheret.empno=(:b);作业:输入一个雇员编号,请将部门名称以及所在地点进行输出DECLAREiINTEGER;DnameVARCHAR2(20);LocVARCHAR2(20);BEGINi:=(:empno);SELECTd.Dname,d.LocINTODname,LocFROMEmp
6、t,DeptdWHEREt.Deptno=d.DeptnoANDt.empno=i;Dbms_Output.Put_Line('部门编号:'
7、
8、Dname
9、
10、'部门地点:'
11、
12、Loc);END;① 字段数据类型定义1.如果直接想利用数据库表中字段的类型,采用的方式:Dnamedept.dname%type;表示dname变量数据类型与dept表中的dname字段类型一致。2.如果要输出多列的值,采用into后面直接跟上需要输出的变量名。3.如果直接代表一行数据,采用方式【emp_cpemp%rowty
13、pe;】表示变量emp_cp代表一行数据。declare--Localvariableshereiinteger;emp_cpemp%rowtype;beginselect*intoemp_cpfromempwhereempno=16;Dbms_Output.Put_Line('员工编号:'
14、
15、emp_cp.empno
16、
17、'员工姓名:'
18、
19、emp_cp.ename);end;2.如果检索的数据无记录,采用异常处理即可。exceptionwhenNO_DATA_FOUNDthendbms_output.
20、put_line('无记录');作业:打印emp表中某行的数据,要求没有数据时打印无数据,有数据时,对奖金如果为空时输出0.疑问:如果查询的结果没有对应的数据了?① 循环²Whiledeclareiinteger;begin--Teststatementsherei:=1;while(i<10)loopdbms_output.put_line('count='
21、
22、i);i:=i+1;endloop;end;While([条件表达式])loop数据库业务处理Endloop;²Loop【相当于do。。。。
23、while】declare--Localvariableshereiinteger;begin--Teststatementsherei:=1;loopdbms_output.put_line('count='
24、
25、i);i:=i+1;exitwheni>10;endloop;end;Loop数据库业务处理exitwhen[条件表达式];Endloop;【作业:】新建一张表,test表,字段为id,name。要求采用plsql编程,动态添加10000行数据。declareiinteger;begini:
26、=1;while(i<1000000)loopinsertintotestvalues(i,'test');i:=i+1;endloop;commit;end;对于大数据量的处理,需要调整缓冲区大小。²For格式:for变量名称in变量的初始值..结束值loop循环语句Endloop;declare--Localvariableshereiinteger;beginforiin1..10loopdbms_output.put_line(i);endloo
此文档下载收益归作者所有