oracle 存储过程深入学习与应用

  对于存储过程已经有过一周的学习时间了,但是之学到一些皮毛,争取根据基础,熟练后能进行深入。

--1、存储过程创建存储过程的语法:
  CREATE [
  OR
  REPLACE ]
  PROCEDURE procedure_name [
                            (
                                parameter_list
                            ) ] {IS | AS} [ local_declarations ]
      BEGIN
          executable_statements [
      EXCEPTION
          exception_handlers ]
      END [ procedure_name ];
      --其中:procedure_name是过程的名称。 parameter_list是参数列表。 local_declarations是局部声明。 executable_statements是可执行语句。 exception_handlers是异常处理程序。
      --示例1: 演示创建过程(参数列表中为IN参数赋予一个默认值,不能为OUT、IN OUT参数赋予默认值)
      create or replace procedure find_emp
                                          (
                                              emp_no in number := 7900
                                          )
      as
          empname varchar2(20);
      begin
          select
              ename
          into
              empname
          from
              emp
          where
              empno = emp_no
          ;
          
          dbms_output.put_line('雇员姓名是 '
          || empname);
      exception
      when no_data_found then
          dbms_output.put_line('雇员编号未找到');
      end find_emp;
      --调用过程:EXECUTE procudure_name(parameters_list);
      --也可以在过程里面调用,直接写上procudure_name而不必写EXECUTE。
      --示例2:演示创建带OUT参数的过程
      create or replace procedure test
                                      (
                                          value1 varchar2
                                        , value2 out number
                                      )
      is
          identity number;
      begin
          select
              sal
          into
              identity
          from
              emp
          where
              empno = value1
          ;
          
          if identity < 2000 then
              value2 := 1000;
          else
              value2 := 500;
          end if;
      end;
      --调用带OUT参数的过程:
      declare
          value2 number;
      begin
          test('7900', value2);
          dbms_output.put_line(value2);
      end;
      --示例3:演示创建带IN OUT参数的过程
      create or replace procedure swap
                                      (
                                          p1 in out number
                                        , p2 in out number
                                      )
      is
          v_temp number;
      begin
          v_temp := p1;
          p1     := p2;
          p2     := v_temp;
      end;
      --调用带IN OUT参数的过程:
      declare
          num1 number := 100;
          num2 number := 200;
      begin
          swap(num1, num2);
          dbms_output.put_line('num1= '
          || num1);
          dbms_output.p ut_line('num2= '
          || num2);
      end;
      --示例4:将过程的执行权限授予其他用户
      GRANT EXECUTE ON find_emp TO scott;
      GRANT EXECUTE ON swap TO PUBLIC;
      --将find_emp过程的执行权限授予给用户scott,将执行swap过程的权限授予所有数据库用户。
      --删除过程语法:
      DROP PROCEDURE procudure_name;

 

转载于:https://www.cnblogs.com/yanjie-java/p/9429042.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值