欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PL/SQL5之——存储过程(stored procedure)

程序员文章站 2022-07-09 09:02:42
...
存储过程(stored procedure),其实就是一个带有名字的PL/SQL程序块。

先举一个简单的存储过程小例子:
create or replace procedure p
is
       cursor c is
              select * from emp for update
begin 
       for v_emp in c loop
           if(v_emp.deptno = 10)then
              update emp set sal = sal + 10 where current of c;
           elsif(v_emp.deptno = 20)then
              update emp set sal = sal + 20 where current of c;
           else
               update emp set sal = sal + 30 where current of c;
           end if;

       end loop;
       commit;
end; 

怎样运行这个存储过程呢?有两个方式:
1.
exec p;

2.
begin
  p;
end;


带参数的存储过程
--创建存储过程
create or replace procedure p
   (v_a in number, v_b number, v_return out number, v_temp in out number)
is
begin
   if(v-a > v_b)then
      v_return := v_a;
   else
      v_return :=v_b;
   end if;
   v_temp :=v_temp + 1;
end;

其中:1.“v_a in number”的in表示传入参数;
2.“v_b number”默认为传入参数;
3.“v_return out number”的out表示输出参数;
4.“v_temp in out number”表示为能同时做传入和输出参数。

--调用存储过程
declare
   v_a number := 3;
   v_b number := 4;
   v_return number;
   v_temp number := 5;
begin
   p(v_a, v_b, v_return, v_temp);
   dbms_output.put_line(v_return);
   dbms_output.put_line(v_temp);
end;


创建函数(function)
create or replace function sal_tax
      (v_sal number)
       return number
is
begin
   if(v_sal < 2000)then
       return 0.10;
   elsif(v_sal < 3000)then
        return 0.15;
   else
        return 0.20;
   end if;
end;