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;
  • 相关阅读:
    有限状态机(FSM)的简单理解和Python实现
    【Papers】Lane-Detection 近期车道线检测论文阅读总结
    刷LeetCode的简易姿势
    数码时代的效率生活
    轻量化模型训练加速的思考(Pytorch实现)
    编程之美!从线程池状态管理来看二进制操作之美
    没想到,Git居然有3种“后悔药”!
    交易系统高并发下的幂等性设计原则
    集群环境中使用Zookeeper实现分布式幂等控制
    Elasticsearch 入门到高手的成长阶梯-索引的基本操作(2)-索引的收缩和拆分
  • 原文地址:https://www.cnblogs.com/yanjie-java/p/9429042.html
Copyright © 2011-2022 走看看