过程

mac2022-06-30  26

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; /

转载于:https://www.cnblogs.com/yunman/p/5497813.html

最新回复(0)