前言
本博客仅做学习笔记,如有侵权,联系后即刻更改
科普:Oracle11g
一、考核内容及要求
要求
- 熟练掌握存储过程的创建和调用。
- 熟练掌握函数、触发器和程序包的创建和使用。
- 理解存储过程和函数在使用过程中的联系和差异。
知识点
- 存储过程(存储过程的创建与调用、三种参数模式(in/out/in out)
- 三种传递参数的方法)
- 函数(创建与调用)
- 触发器(触发器概述、分类与创建、语句级触发器、行级触发器)
- 程序包(程序包规范、程序包主体)。
章节
- 7.1.1,7.1.2,7.2,7.3.1,7.3.2,7.3.3,7.4.1,7.4.2
set serveroutput on 设置输出信息
二、存储过程、触发器和程序包
1、存储过程
特点
命名的PL/SQL块
保存在数据库中,不可以被SQL语句直接调用调用
- execut(exec)存储过程名:
该命令只可在SQLPLUS里使用- call 存储过程名() :
call是sql命令,任何可视化工具都可以使用,但是存储过程名后得接括号,无论有没有参数
创建
CREATE OR REPLACE procedure 存储过程名(参数1,参数2,…参数n) is/as
is as可以互换
参数
- IN模式参数
只能被存储过程读取
IN模式参数类型不能指定长度。
传参的三种方式:按名称(=>)、按位置、混合- out模式参数
通过out返回参数值
调用或执行这个存储过程时,我们需要定义变量来保存两个参数- in out模式参数
- 删除
drop procedure 存储过程名;
2、函数
创建函数与存储过程都是编译后放在内存供用户使用
- 创建:
create or replace function 函数名称(参数1 参数1类型,参数2 参数2类型)
return 函数的返回值类型 is
函数的内部变量(可选项);
调用
调用函数时要用表达式,而存储过程不用- 删除
drop function 函数名
3、触发器
- 语法格式
create or replace trigger 触发器名字
before/after/instead of 触发事件
on 触发体
for each row when 触发条件
//指定触发器为行级触发器
begin
sql语句
end 触发器名字;
- 分为五种类型
- 行级触发器:
for each row
常和create sequence 创建序列一同使用
当DML语句对每一行数据进行操作时都会引起该触发器- 语句级触发器:
无论DML影响多少行数据,其所引起的触发器仅执行一次- 替换触发器:
通过在替换触发器编写适当的代码对构成视图的基表进行操作
定义在视图上的触发器,用来替换所使用的实际语句的触发器- 用户事件触发器:
用户登录到数据库或者使用ALTER语句修改表结构等事件的触发器- 系统事件触发器:
只Oracle数据库系统的事件中进行的触发器,如Oracle实例的启动与关闭
4、程序包
分为程序包规范和程序主体
- 程序包规范
create or replace package 程序包名 is- 程序主体
create or replace package body 包名 is删除程序包
- drop package 包名
总结
小小励志
有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》