1.什么是PL/SQL
1.1 PL/SQL含义
Procedure Language / SQL 是Oracle对过程化语言的扩展,针对CRUD的过程处理语句,使得SQL语句具有过程处理能力。
1.2 为什么要学习PL/SQL
- 比如要给员工按职位不同增加不同的工资,虽然可以用java等编程语言操作数据库进行实现,但是效率远不如使用Oralce原生的变成语言实现。
- 为了学习存储过程和触发器打基础
- Procedure Language / SQL 是Oracle对过程化语言的扩展,针对CRUD的过程处理语句,使得SQL语句具有过程处理能力。
2.最简单的PL/SQL程序
我用的是Oracle11g,客户端连接工具是SQLDeveloper。
|
|
3.使用desc查看表结构、视图结构、包结构
4.基本数据类型
|
|
5.if else then的使用
|
|
6.循环的使用
6.1 while loop 循环
|
|
6.2 loop循环
|
|
6.3 for loop循环
|
|
7.游标/光标
7.1什么是游标
游标可以理解为一个指向数据集合的指针
cursor c_user is select * from tb_user; – c_user就是指向user表中所有数据的集合
7.2游标的属性
- found: 光标有值
- notfound:光标无
- isopen:光标是否打开
- rowcount:光标影响的行数
7.3查看和和修改游标限制
游标数的限制:默认情况下,oracle数据库只允许在同一个会话中打开300个游标。
查看和修改游标限制数:
|
|
|
|
7.4 游标应用示例
示例1
|
|
示例2
|
|
员工涨工资程序
|
|
(此图有误,但是结果是正确的,懒得再截图了)
8.系统例外(异常)
8.1 NO_DATA_FOUND
|
|
8.2 TOO_MANY_ROWS
|
|
8.3 ZERO_DIVIDE
|
|
8.4 VALUE_ER
|
|
|
|
9.案例
9.1按照入职年份统计员工数量
|
|
9.2员工涨工资
从薪资最低的员工开始,每人涨10%的工资,要求工资总数不能超过50000
|
|
9.3 按部门统计员工工资区间和部门总工资
创建部门表
|
|
插入数据
|
|
创建统计结果表
|
|
|
|
9.4按系名分段统计成绩(<60,60~85,>85) 大学物理课程各个分数段的学生人数,以及各系学生的平均成绩。60,60~85,>
各个表的创建和数据插入sql
|
|
PL/SQL程序
|
|