oracle如何创建存储过程和调用

oracle存储过程的创建语法

create or replace procedure 存储过程名称
(
--定义输入、输出参数--
参数名1 in 参数类型,
参数名2 in 参数类型,
参数名3 in 参数类型,
参数名4 out 参数类型
)
as
--定义变量--
--变量名 变量数据类型;如:
 -- numCount integer; 
begin   
     --处理方法-
end;

上面我们创建一个处理加、减、乘、除计算的函数,那么我们也可以建成存储过程

/*****
** 创建加、减、乘、除计算的存储过程
**输入参数: 数字1,数字2,计算类型
**输出参数: 数字3
*****/
create or replace procedure Proc_Test
(
--定义输入、输出参数--
num_A in integer,
num_B in integer,
numType in integer,
num_C out integer
)
as
--定义变量--
 -- numCount integer;
 -- numStr varchar(20);  
begin   
     --判断计算类型--
     if numType=1 then
        num_C := num_A + num_B;
     elsif numType=2 then
        num_C := num_A - num_B;
     elsif numType=3 then
        num_C := num_A * num_B; 
     elsif numType=4 then
        num_C := num_A / num_B; 
     else
     --其它处理
       dbms_output.put_line('其它处理');
     end if;
end;

那么如何调用存储过程

declare num_C integer;
begin
   --调用存储过程---
   Proc_Test(3,4,3,num_C);
   dbms_output.put_line('输出结果:'|| num_C );
end;

输出结果

 那么,如果我们要在存储过程调用函数,是怎么处理的呢?

create or replace procedure Proc_Test
(
--定义输入、输出参数--
num_A in integer,
num_B in integer,
numType in integer,
num_C out integer
)
as
--定义变量--
 -- numStr varchar(20);  
begin   
   /*  --判断计算类型--
     if numType=1 then
        num_C := num_A + num_B;
     elsif numType=2 then
        num_C := num_A - num_B;
     elsif numType=3 then
        num_C := num_A * num_B; 
     elsif numType=4 then
        num_C := num_A / num_B; 
     else
     --其它处理
       dbms_output.put_line('其它处理');
     end if;*/
     
     --调用函数 并赋值到num_C
     num_C:=fun_Test(num_A,num_B,numType);
end;

只要把处理过程放到函数中,存储过程调用函数就可以了

再次调用的结果

declare num_C integer;
begin
   --调用存储过程---
   Proc_Test(12,2,4,num_C);
   dbms_output.put_line('输出结果:'|| num_C );
end;

输出结果

 

posted @ 2019-04-16 11:12  小小邪  阅读(114170)  评论(2编辑  收藏  举报