- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八次课oracle【存储过程与触发器】
Oracle的存储过程与触发器
oracle第八次课存储过程与触发器
今天我们主要讲的是存储过程与触发器,存储过程与前面讲的函数没有什么区别,唯一的区别就是没有返回值
下面我们来看一看这个创建的语法
create or replace procedure procedure_name(参数)
is
.......
下面我们来举一个例子
create or replace procedure myp1(myxb in varchar2)
is
my_age number;
begin
select age into my_age from ts019student where xb = myxb;
dbms_output.put_line(my_age);
exception
when NO_DATA_FOUND then
--when others then
dbms_output.put_line(没有发现数据!);
end;
--下面我们来调用这个存储过程
declare
begin
myp1(abc);
end;
--上面的过程我们使用的是in 同样的道理,我们可以使用 out
create or replace procedure myp2(myxb in varchar2, my_xm out varchar2)
is
my_age number;
begin
select age into my_age from ts019student where xb = myxb;
select xn into my_xm from ts019student where xb = myxb;
--上面的两句话等价于下面的一句话
--select age,xn into my_age ,my_xm from ts019student where xb = myxb;
dbms_output.put_line(my_age);
exception
when NO_DATA_FOUND then
Dbms_output.put_line(没有发现数据!);
end;
--同样我们可以调用这个存储过程
declare
my_xm varchar2(20);
begin
myp2(abc,my_xm);
dbms_output.put_line(学生的姓名是:||my_xm);
end;
--我们可以查询一下是不是这个数据
select * from ts019student
/*
存储过程也是支持in out 的,比如我们来测试一下就知道了
*/
create or replace procedure myp3(a in out number,b in out number)
is
temp number;
begin
temp:=a;
a:=b;
b:=temp;
end;
--调用上面的过程
declare
a number:=1;
b number:=2;
begin
dbms_output.put_line(执行之前:a=||a||;b=||b);
myp3(a,b);
dbms_output.put_line(执行过后:a=||a||;b=||b);
end;
--创建用户
create user shezhanjun
identified by shezhanjun
--给他赋予执行myp1存储过程的权限
grant execute on myp1 to shezhanjun
--回收该权限
revoke execute on myp1 from shezhanjun
--删除这个存储过程
drop procedure myp1
----------------------------------------------------------------------------------------
下面我们来讲我们主要的东西,就是触发器,触发器在以后中用得最多了
尤其是???级别触发器
下面我们来对触发器进行简单的介绍
触发器的定义:是被动调用的存储过程,发生一件事情的时候自动执行
可以用它来自动生成数据,启动复杂的程序逻辑,下面我们先来创建一个表
truncate table cp
create table cp(
cpbb number primary key,
cpmc varchar2(20),
kcl number,
jg number,
zjz number
);
comment on column cp.cpbb is 产品编号;
comment on
文档评论(0)