pl/sql编程(四)存储过程、包

来源:互联网 发布:噪声分析软件 编辑:程序博客网 时间:2024/05/22 15:04

存储过程

过程用于执行特定的操作。当建立过程时,即可以指定输入参数(in),也可以指定输出参数(out)。通过在过程中使用输入参数,可以将数据传递到执行部分;通过输出参数,可以将执行部分的数据传递到应用环境。

可以使用create or replace procedure命令来创建过程。

实例1

①请编写一个过程,可以输入雇员名,新工资,用以修改该雇员的工资

②如何调用过程?(2种方法) ---> exec、call

③如何在java、.net中调用储存过程

create or replace procedure(name varchar2, newSal number) example3 is

--定义变量部分放在isbegin之间

begin

--执行部分

--根据用户名修改工资

update emp set sal=newSal where ename=name;

end;

上例子:
例子一:
create or replace procedure ChangeAvgsalpro(d_deptno in number) is  type cur_type is ref cursor;  cur cur_type;  avgSal number(15,2);  emp_row emp%rowType;begin  open cur for  select *  from emp where emp.deptno=d_deptno;    select avg(sal) into avgSal from emp where emp.deptno=d_deptno;  loop    fetch cur into emp_row;    exit when cur%notfound;    if emp_row.sal<avgSal then      update emp set sal=avgsal where emp.empno=emp_row.empno;    end if;      end loop;  commit;end ChangeAvgsalpro;-----测试:declare    begin   changeavgsalpro(10); end;
例子二:
create or replace procedure Procedure_1(d_deptno in number,result out mypackage.cur_type) isbegin  open result for   select e.empno,e.ename,e.sal,a.s,e.sal-a.s nsal   from emp e ,  (select avg(sal) s,deptno from emp where emp.deptno=d_deptno group by deptno)awhere e.deptno=a.deptno  ;end Procedure_1;-----包:create or replace package mypackageis type cur_type is ref cursor;end mypackage;------------------------测试:-- Created on 2015/8/26 by ADMINISTRATOR declare    cur mypackage.cur_type;   type rec is  record(e_empno number(15),e_ename varchar2(20),e_sal number(15,2),   avgsal number(15,2),nsal number(15,2));   result rec;begin   procedure_1(20,cur);      loop     fetch cur into result;     exit when cur%notfound;     dbms_output.put_line(result.e_empno||':'||result.nsal);   end loop;end;



0 0
原创粉丝点击