Oracle学习笔记二十二:存储过程

一、存储过程简介

• 存储过程(Stored Procedure)是一组为了完成特定功能的PL/SQL语句块,经编译后存储在数据库中。

• 存储过程经编译和SQL优化后存储在数据库服务器中,使用时只要调用即可。

• 存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

• 用户通过指定存储过程的名字给出参数(如果该存储过程带有参数)来执行它。

二、存储过程分类

1)系统存储过程

  • 系统存储过程就是由Oracle预先提供的一组完成特定功能的存储过程,安装完Oracle就有了。

2)自定义存储过程

  • 自定义存储过程就是存在Oracle数据库里由一组PL/SQL语句组成的自定义过程(Procedure)。它可以供其它Oracle自定义存储过程、自定义函数和Job调用或者由客户端程序调用。

三、存储过程语法

• 定义存储过程的语法:

  CREATE [OR REPLACE] PROCEDURE 存储过程名

    [(参数名1 [参数模式] 参数数据类型1,参数名2 [参数模式] 参数数据类型2)]

  IS [AS]

    [变量 [constant] 类型 [默认值]]

  BEGIN

    PL/SQL 语句块;

  END 存储过程名;

四、无参存储过程

1)定义无参存储过程

create or replace procedure PrintToday
is
begin
    dbms_output.put_line(sysdate);
end;

2)执行无参存储过程

begin
    PrintToday();
end;

五、存储过程参数

• 建立存储过程时,既可以指定存储过程的参数,也可以不提供任何参数。

• 存储过程的参数主要有三种类型:输入参数(IN)、输出参数(OUT)、输入输出参数(IN OUT),其中IN用于接收调用环境的输入参数,OUT用于输出数据传递到调用环境,IN OUT不仅要接收数据,而且要输出数据到调用环境。

• 在建立存储过程时,输入参数的IN可以省略。

• 注意:当定义存储过程的参数时,只能指定数据类型,不能指定数据长度。

六、有参存储过程

6.1、带输入参数存储过程

1)定义带输入参数存储过程

create or replace procedure InsertEmp
(
    p_empno varchar2,
    p_ename varchar2
)
is
begin
    insert into emp (empno,ename) values (p_empno,p_ename);
    commit;
end;

2)执行带输入参数存储过程

begin
    InsertEmp ('1004','Green');
end;

6.2、带输出参数存储过程

1)定义带输出参数存储过程

create or replace procedure CountEmp
(
    p_ename in varchar2,
    out_value out number
)
is
begin
    select count(1) into out_value from emp where ename=p_ename;
end;

2)执行带输出参数存储过程

declare
    out_value number;
begin
    CountEmp ('James',out_value);
    dbms_output.put_line(out_value);
end;

七、维护存储过程

• 修改存储过程

  • 与创建的语法相同,使用REPLACE替换即可。

• 删除存储过程

  • drop procedure [schema.]过程名

 

posted @ 2022-06-05 22:31  缥缈的尘埃  阅读(1140)  评论(0编辑  收藏  举报