• 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;
  • 相关阅读:
    .Net时间计算函数,统计某一天是一年的第几周,这一周从哪天开始到哪天结束
    1分钟搞定超慢SQL
    网站
    舞台
    相见欢
    一套完整系统对人生的意义
    2015/08/15心情
    Linux下压缩某个文件夹(文件夹打包)
    init进程 && 解析Android启动脚本init.rc && 修改它使不启动android && init.rc中启动一个sh文件
    andriod系统裁剪心得
  • 原文地址:https://www.cnblogs.com/yanjie-java/p/9429042.html
Copyright © 2020-2023  润新知