存储过程

247 阅读2分钟

什么是存储过程

存储过程是被命名的 PL/SQL 块,存储于数据库中,是数据库对象的一种。 应用程序可以调用存储过程,执行相应的逻辑。

存储过程与存储函数都可以封装一定的业务逻辑并返回结果,存在区别如 下:

1、存储函数中有返回值,且必须返回;而存储过程没有返回值,可以通过 传出参数返回多个值。

2、存储函数可以在 select 语句中直接使用,而存储过程不能。过程多数是 被应用程序所调用。

3、存储函数一般都是封装一个查询结果,而存储过程一般都封装一段事务 代码

存储过程语法结构

创建或修改存储过程的语法如下:

CREATE [ OR REPLACE ] PROCEDURE 存储过程名称

(参数名 类型, 参数名 类型, 参数名 类型)

IS|AS 变量声明部分;

BEGIN

逻辑部分

[EXCEPTION 异常处理部分]

END;

参数只指定类型,不指定长度

过程参数的三种模式:

IN 传入参数(默认)

OUT 传出参数 ,主要用于返回程序运行结果

IN OUT 传入传出参数

案例

创建不带传出参数的存储过程:添加业主信息

create sequence seq_owners start with 11;--业主序列
--创建不带传出参数的存储过程
create or replace procedure pro_owners_add
  (
  v_name varchar2,--名称
  v_addressid number, --地址编号
  v_housenumber varchar2,--门牌号
  v_watermeter varchar2,--水表号
  v_ownertypeid number--业主类型
  )
  is begin
  insert into t_owners( seq_owners.nextval,v_name,v_addressid,v_housenumber ,v_watermeter,sysdate,v_ownertypeid );
  commit;
  end;

创建成功

image.png

调用存储过程


--调用不带传出参数的存储过程 第一种方式
call pro_owners_add( '马大哈',2,'22333','66777',1 );
--调用不带传出参数的存储过程 第二种方式
begin
  pro_owners_add( '马小哈',2,'22333','223344',1 );
end;

调用存储过程成功之后,查询表数据

image.png

创建带传出参数的存储过程