ITPub博客

首页 > 数据库 > Oracle > 数据库开发---常用对象-存储过程

数据库开发---常用对象-存储过程

原创 Oracle 作者:lff1530983327 时间:2015-01-12 16:50:44 0 删除 编辑

---存储过程

---过程的创建

create or replace procedure p_test_1(参数) as

begin

  procedure body;

end;

 

 

   存储过程中参数的类型

 

         IN:表示是一个输入参数,可以指定缺省值。如省略参数类型,则缺省为in类型

 

         OUT:表示是一个输出参数

 

         IN OUT:既可以作为一个输入参数,也可以作为一个输出参数来输出结果

---过程的执行

 EXECUTE |CALL procedure_name [(argument_list)]

---创建一个过程,以JOB为参数,查询该JOB的最高工资、最低工资、平均工资。

create or replace procedure display_sal (ejob in emp.job%type) as

  v_max emp.job%type;

  v_min emp.job%type;

  v_avg emp.job%type;

begin

  select avg(sal) into v_avg from emp where job = ejob;

  select max(sal) into v_max from emp where job = ejob;

  select min(sal) into v_min from emp where job = ejob;

  DBMS_OUTPUT.PUT_LINE('DEPT ' || ejob || ' avg sal:' || v_avg);

  DBMS_OUTPUT.PUT_LINE('DEPT ' || ejob || ' max sal:' || v_max);

  DBMS_OUTPUT.PUT_LINE('DEPT ' || ejob || ' min sal:' || v_min);

EXCEPTION

  WHEN NO_DATA_FOUND THEN

    DBMS_OUTPUT.PUT_LINE('NOT FOUND RECORD!');

END display_sal;

COMMIT;

execute displace_sal('SALES');

 

存储过程参数的传递方式:

              按位置传递:

                   实参按顺序将值传给形参

                   EXECUTE ED_EMP(7900,:t_name,:t_sal);

                   EXECUTE ED_EMP(8000,'TEST2',20);

              按名字传递

                   EXECUTE ED_EMP(v_name=>'ABCDE',v_dept=>10,v_no=>8003);

              混合传递

                 EXECUTE ED_EMP(8005,v_dept=>20,v_name=>'TEST5');

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30018455/viewspace-1399240/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-11-12

  • 博文量
    72
  • 访问量
    49751