zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    git 每次push和pull都需要提交密码
    git push时报错refusing to merge unrelated histories
    打包时,node内存溢出问题解决方法
    dva中roadhog版本升级后带来的问题及解决方法
    Android
    Python Model : glob 文件路径查找
    Tools info
    Python class
    Life Info
    Char 10 格式化及如何正确使用
  • 原文地址:https://www.cnblogs.com/yanjie-java/p/9429042.html
Copyright © 2011-2022 走看看