pl/sql
- procedural language / sql 过程化语言
是oracle在标准的sql语言上的扩展
不仅允许嵌入sql语言,还可以定义变量和常量
允许使用条件语句和循环语句,允许使用例外处理各种错误
- 过程、函数、触发器是pl/sql编写
- 过程、函数、触发器是在oracle中
- pl/sql是非常强大的数据库过程语言
- 过程、函数可以在JAVA程序中调用
-
学习必要性
1⃣️ 提高应用程序的运行性能
2⃣️ 模块化的设计思想
3⃣️ 减少网络传输量
4⃣️ 提高安全性 -
缺点
移植性不好
用什么编写pl/sql块
- sql plus开发工具 (使用较多)
oracle公司提供的一个工具 - pl/sql developer开发工具
用于开发pl/sql块的集成开发环境(ide),是一个独立产品
--SQL*PLUS案例
--编写一个存储过程,该过程可以向某表中添加记录
--scott用户登录
create procedure sp_pro1 is
begin
insert into mytest('韩顺平','1234')
end;
/
--pl/sql developer案例
--编写一个存储过程,该过程可以删除某表记录
create procedure sp_pro2 is
begin
delete from mytest
where name = '韩顺平';
end;
/
介绍
pl/sql变成可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块
比如:分页存储过程模块、订单处理存储过程模块、转账存储过程模块……
pl/sql可以做什么
- 简单分类
块(编程)是基础单位
里面包含 过程(存储过程)、函数、触发器、包
编写规范
- 注释
单行注释: –
select * from emp where empno = 7788; --取得员工信息
多行注释: /* */来划分 - 标识符号的命名规范
1)当定义变量时,建议用v_作为前缀
2)当定义常量时,建议用c_作为前缀
3)当定义游标时,建议用_cursor作为后缀
4)当定义例外时,建议用e_作为前缀
pl/sql块介绍
块(block)是pl/sql的基本程序单位
编写pl/sql程序实际上就是编写pl/sql块
- 简单的应用功能: 编写一个pl/sql块
- 复杂的应用功能:在一个pl/sql块中嵌套其它的pl/sql块
块结构示意图
由三个部分组成
- 定义部分 ( declare) 可选部分
定义常量、变量、游标、例外、复杂数据类型 - 执行部分(begin) 必须部分
要执行的pl/sql语句和sql语句 - 例外处理部分 (exception)可选部分
处理运行的各种错误
pl/sql分类
过程
用于执行特定的操作
当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)
通过在过程中使用输入参数,可以将数据传递到执行部分
通过使用输出参数,可以将执行部分的数据传递到应用环境
在sql plus中可以使用 create procedure命令来建立过程
--编写一个过程,可以输入雇员名,新工资 可修改雇员的工资
create procedure sp_pro1(spname varcharw,newsal number) is
--执行部分,根据用户名修改工资
begin
update emp set sal = newsal
where ename = spname;
end;
/
--两种方法调用存储过程
exec sp_pro1('scott',4678);
call sp_pro1('scott',4678);
--实例一,只包含执行部分的pl/sql块
set serveroutput on --打开输出选项
begin
dbms