• 过程


    3.过程
     过程可以封装对数据表增删改查操作。
     需要对表增删改操作时,需要使用
    过程(存储过程)。
    create or replace procedure 过程名
    (参数名 类型)
    is
    --变量定义
    begin
    --主处理
    exception
    --异常处理
    end;
     
    案例:编写一个存储过程,按给定员工
    编号和增加工资额涨薪。
    create or replace
    procedure add_sal_pro
    (v_empno number,v_sal number)
    is
    begin
      update emp set sal=sal+v_sal
      where empno=v_empno;
      commit;
    end;
    /
    调用方法:call 过程名(参数值);
     
    案例:带返回值的过程
     传入两个整数a和b,
    返回(a+b)+(a*b)+(a-b)+(a/b)表达式值
     
    create or replace procedure mypro1
    (a number,b number,c out number)
    is
    begin
      c := (a+b)+(a*b)+(a-b)+(a/b);
    end;
    /
    测试:
    declare
     r number;
    begin
      mypro1(5,2,r);
      dbms_output.put_line(r);
    end;
     
     
    过程参数定义格式:
    变量名 IN|OUT 类型
    IN接收传入的常量值;
    OUT给一个变量值,把返回结果带出去
     
     
    案例:采用过程重构昨天根据emp生成
    纳税表emp_tax记录案例
     
    create or replace procedure emp_tax_pro
    is
     CURSOR c_emp IS select * from emp;
     v_emp emp%ROWTYPE;--记录变量,保存一行员工信息
     v_total emp.sal%TYPE;--工资总额
     v_tax_sal emp.sal%TYPE;--交税工资
     v_tax emp.sal%TYPE;--交税金额
    begin
      OPEN c_emp;
      LOOP
      --循环取出EMP表每一行员工记录
        fetch c_emp into v_emp;
        exit when c_emp%NOTFOUND;
      --计算员工应交税金额TAX
        v_total := v_emp.sal+NVL(v_emp.comm,0);
      --调用get_tax()函数根据工资总额v_total计算
        v_tax := get_tax(v_total);
      --将EMP_TAX所需的字段值写入INSERT
        insert into EMP_TAX(id,empno,
         ename,sal,tax,tax_date)
        values(tax_seq.nextval,v_emp.empno,
         v_emp.ename,v_total,v_tax,sysdate);
      END LOOP;
      CLOSE c_emp;
      commit;--提交操作
    end;
    /
  • 相关阅读:
    原型设计作业
    案例分析作业
    编程作业
    阅读任务
    自我介绍
    5 20210420-1 团队作业1—团队展示
    3 20210405-1 案例分析作业
    阅读任务
    自我介绍
    原型设计
  • 原文地址:https://www.cnblogs.com/yunman/p/5497813.html
Copyright © 2020-2023  润新知