Oracle存储过程

Posted 花溪的小石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle存储过程相关的知识,希望对你有一定的参考价值。

完整的Oracle存储过程语法结构如下:

  

Create or replace procedure 过程名 as
    声明语句段;
begin
    执行语句段;
exception
    异常处理语句段;
end;

as关键词代替了无名块的declare

调用存储过程语句:

  call procedure_name();    其中()是必不可少的,无论是有参数还是没有参数

赋值语句:

  select xxx into .....或者直接  变量:=xxx

好了,下面来一个简单的例子来更好的理解存储过程

创建一个表student 

create table student(
  no number(6) primary key,
  name varchar2(25),
  age number(4)      
    
);

insert into student(no,name,age) values(1,\'刘亦菲\',26);
insert into student(no,name,age) values(2,\'陈意涵\',30);
commit;

创建一个简单的存储过程并调用
create or replace procedure stu_proc as
      p_name varchar2(25);
begin 
      select name into p_name from student where no=2;
      dbms_output.put_line(p_name);
end;

call stu_proc();

可以看到输出了 陈意涵 

上面的存储过程是一个最简单的无参数的存储过程,下面以一个有输入参数的存储过程进行演示

create or replace procedure stu_proc1(sno in student.no%type) as
       p_name varchar2(25);
begin 
       select name into p_name from student where no=sno;
       dbms_output.put_line(p_name);
end;

call stu_proc1(1);

调用stu_proc1(1)将输出 刘亦菲

-----------------------------------------------------

为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分

异常(EXCEPTION)是一种PL/SQL标识符,包括预定义异常、非预定义异常和自定义异常

预定义异常是指PL/SQL提供的系统异常,非预定义异常用于处理与预定义异常无关的Oracle错误(如完整性约束等),自定义异常用于处理与Oracle错误的其他异常情况

RAISE_APPLICATION_ERROR用于自定义错误信息,并且消息号必须在-20000~-20999之间

下面通过一个简单的实例来演示

drop procedure stu_proc1;

create procedure stu_proc1(sno in student.no%type) as 
       p_name varchar2(25);
begin 
       select name into p_name from student where no=sno;
       
       exception 
              when NO_DATA_FOUND then 
              raise_application_error(-20011,\'ERROR:不存在!\');
       dbms_output.put_line(p_name);
end;

call stu_proc1(3);

 

 

以上是关于Oracle存储过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle中的存储过程,有啥作用,以及怎么在代码中使用?

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle form怎么调用oracle存储过程

oracle数据库可否批量导出存储过程

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle的存储过程