上午Les12PLSQL程序设计

上传人:E**** 文档编号:91278977 上传时间:2019-06-27 格式:PPT 页数:29 大小:345.50KB
返回 下载 相关 举报
上午Les12PLSQL程序设计_第1页
第1页 / 共29页
上午Les12PLSQL程序设计_第2页
第2页 / 共29页
上午Les12PLSQL程序设计_第3页
第3页 / 共29页
上午Les12PLSQL程序设计_第4页
第4页 / 共29页
上午Les12PLSQL程序设计_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《上午Les12PLSQL程序设计》由会员分享,可在线阅读,更多相关《上午Les12PLSQL程序设计(29页珍藏版)》请在金锄头文库上搜索。

1、北京传智播客教育 ,PLSQL程序设计,北京传智播客教育 ,通过本章学习,您将可以: PL/SQL程序结构及组成 PL/SQL的应用,目标,最简单的PL/SQL程序,在屏幕上打印”Hello World!”,北京传智播客教育 ,Java程序,PL/SQL程序,注意:如果要在屏幕上输出信息,需要将serveroutput开关打开 set serveroutput on,PL/SQL程序结构及组成,什么是PL/SQL? PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语

2、言具有过程处理能力。,北京传智播客教育 ,PL/SQL的提出,北京传智播客教育 ,例2: 按职工的职称长工资,总裁长1000元,经理长800元,其他人员长400元。,PL/SQL程序结构,北京传智播客教育 ,declare 说明部分 (变量说明,光标申明,例外说明 begin 语句序列 (DML语句 exception 例外处理语句 End; /,变量和常量说明,说明变量 (char, varchar2, date, number, boolean, long) 记录变量分量的引用: emp_rec.ename:=ADAMS;,北京传智播客教育 ,说明变量名、数据类型和长度后用分号结束说明语句

3、。,引用型变量,即my_name的类型与emp表中ename列的类型一样,记录型变量,IF语句,北京传智播客教育 ,3. IF 条件 THEN 语句; ELSIF 语句 THEN 语句; ELSE 语句; END IF;,1. IF 条件 THEN 语句1; 语句2; END IF;,2. IF 条件 THEN 语句序列1; ELSE 语句序列 2; END IF;,IF语句示例:,判断用户输入的数字。 提示: 从键盘输入: accept num prompt 请输入一个数字; 得到键盘输入的值: pnum number := ,北京传智播客教育 ,循环语句,北京传智播客教育 ,WHILE t

4、otal = 25000 LOOP . total : = total + salary; END LOOP;,Loop EXIT when 条件; End loop,FOR I IN 1 . . 3 LOOP 语句序列 ; END LOOP ;,循环语句示例:,输出数字110。,北京传智播客教育 ,示例:按员工的工种长工资,总裁1000元,经理长800元其,他人员长400元。,北京传智播客教育 ,问题1:返回多行,问题2:没有指定where条件,光标(Cursor)=ResultSet,说明光标语法: CURSOR 光标名 (参数名 数据类型,参数名 数据类型.) IS SELECT 语句;

5、 用于存储一个查询返回的多行数据 打开光标: open c1; (打开光标执行查询) 取一行光标的值:fetch c1 into pjob; (取一行到变量中) 关闭光标: close c1;(关闭游标释放资源) 注意: 上面的pjob必须与emp表中的job列类型一致: 定义:pjob emp.empjob%type;,北京传智播客教育 ,例如: cursor c1 is select ename from emp;,演示:使用游标查询员工姓名和工资,并打印,示例:按员工的工种长工资,总裁1000元,经理长800元其,他人员长400元。,北京传智播客教育 ,带参数的光标,cursor c2(

6、jobc varchar2) is select ename, sal from emp where job=jobc;,北京传智播客教育 ,执行语句: Open c2(clerk);,带参数的光标示例:,写一段PL/SQL程序,为部门号为10的员工涨工资。,北京传智播客教育 ,例外,例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。,北京传智播客教育 ,Oracle的异常处理,系统定义例外 No_data_found (没有找到数据) Too_many_rows (select into语句匹配多个行) Zero_Divide ( 被零除) Value_error (算术或转换

7、错误) Timeout_on_resource (在等待资源时发生超时) 用户定义的例外 演示:系统定义例外(被0除),北京传智播客教育 ,演示:用户定义例外及处理例外,北京传智播客教育 ,DECLARE My_job char(10); v_sal emp.sal%type; No_data exception; cursor c1 is select distinct job from emp order by job;,begin open c1; Fetch c1 into v_job; IF c1%notFOUND then raise no_data; end if; EXCEPT

8、ION WHEN no_data THEN insert into emp values(fetch语句没有获得数据或数据已经处理完); END;,用户定义例外及处理例外(续),在declare节中定义例外 out_of exception ; 在可行语句中引起例外 raise out_of ; 在Exception节处理例外 when Out_of then ,北京传智播客教育 ,赋值语句,var1:=this is a argument; emp_rec.sal: = sal *2 + nvl(comm, 0); sum_sal:=sum_sal+v_sal; FETCH c1 INTO

9、e_eno , e_sal ;,北京传智播客教育 ,COMMIT语句,结束当前事务, 使当前事务所执行的全部修改永久化。,北京传智播客教育 ,注释,- This is a comment 或 /* This is a comment */,北京传智播客教育 ,实例1:统计每年入职的员工个数。,使用PL/SQL 重写第六讲的例子。,北京传智播客教育 ,实例2:(使用scott用户下的emp表),为员工长工资。从最低工资调起每人长10,但工资总额不能超过5万元,请计算长工资的人数和长工资后的工资总额,并输出输出长工资人数及工资总额。 可能用到的SQL语句: select empno,sal fro

10、m emp order by sal ; select sum(sal) into s_sal from emp;,北京传智播客教育 ,实例2:(续),北京传智播客教育 ,实例3:,用PL/SQL语言编写一程序,实现按部门分段(6000以上、(6000,3000)、3000元以下)统计各工资段的职工人数、以及各部门的工资总额(工资总额中不包括奖金),参考如下格式:,北京传智播客教育 ,部门 小于3000数 3000-6000 大于6000 工资总额 10 2 1 0 8750 20 3 2 0 10875 30 6 0 0 9400,实例3: (续),提示:可以创建一张新表用于保存数据,北京传智播客教育 ,create table msg1 (deptno number, emp_num1 number, emp_num2 number, emp_num3 number, sum_sal number);,实例3: (续),北京传智播客教育 ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号