Oracle存储过程、触发器详细分解

本文详细介绍了Oracle数据库中的存储过程,包括存储过程的概念、特点、创建与执行方法。同时,还探讨了触发器的定义、类型及常见应用场景,如限制表操作、日志记录等。
摘要由CSDN通过智能技术生成

一、存储过程简介:

1、存储过程是以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。

2、存储过程可由数据库提供安全保证,要想使用存储过程,需要有存储过程的所有者的授权,只有被授权的用户或创建者本身才能调用执行存储过程。

3、存储过程的信息是写入数据字典的,所以存储过程可以看作是一个公用模块,用户编写的PL/SQL程序或其他存储过程都可以调用它(但存储过程和函数不能调用PL/SQL程序)。一个重复使用的功能,可以设计成为存储过程。

4、像其他高级语言的过程和函数一样,可以传递参数给存储过程,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。

5、存储过程需要进行编译,以排除语法错误,只有编译通过才能调用。

1、创建存储过程

create [or replace] procedure 存储过程名

[(参数1 类型,参数2 out 类型……)]

as

变量名  类型;

begin

程序代码体

end;

运用此语法我们创建了一个名为“procedure_name”的存储过程。首行的 replace 表示替换,对于Oracle的存储过程而言,我们只能创建 (create)、删除 (drop) 或替换 (replace) 它,没有类似于SQL Server的修改 (Alter) 操作。

begin 与 end 表示PL-SQL语句块的开始和结束,所有需要执行的语句都写在此处。end结束后,还需跟上 “/” 表示执行上述语句块,创建这个存储过程。

2、无参无返

create or replace procedure p1
–or replace代表创建该存储过程时,若存储名存在,则替换原存储过程,重新创建
–无参数列表时,不需要写()
as
begin
dbms_output.put_line(‘hello world’);
end;

–执行存储过程方式1
set serveroutput on;
begin
p1();
end;
–执行存储过程方式2
set serveroutput on;
execute p1();

3、有参有返

create or replace procedure p2

(name in varchar2,age int,msg out varchar2)

–参数列表中,声明变量类型时切记不能写大小,只写类型名即可,例如参数列表中的name变量的声明

–参数列表中,输入参数用in表示,输出参数用out表示,不写时默认为输入参数。

------------输入参数不能携带值出去,输出参数不能携带值进来,当既想携带值进来,又想携带值出去,可以用in out

as

begin

msg:=‘姓名’||name||‘,年龄’||age;

–赋值时除了可以使用:=,还可以用into来实现

–上面子句等价于select ‘姓名’||name||‘,年龄’||age into msg from dual;

end;

–执行存储过程

set serveroutput on;

dec

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚁库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值