PL/SQL5之——存储过程(stored procedure)
程序员文章站
2022-07-09 09:02:42
...
存储过程(stored procedure),其实就是一个带有名字的PL/SQL程序块。
先举一个简单的存储过程小例子:
怎样运行这个存储过程呢?有两个方式:
1.
2.
带参数的存储过程
其中:1.“v_a in number”的in表示传入参数;
2.“v_b number”默认为传入参数;
3.“v_return out number”的out表示输出参数;
4.“v_temp in out number”表示为能同时做传入和输出参数。
创建函数(function)
先举一个简单的存储过程小例子:
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;