ORACLE 存储过程
前奏: 1:必要的概念: ORACLE 提供能够把 PL/SQL 程序存储在数据库中。并能够在不论什么地方来执行它。这样就叫存储过 程或函数。过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数据库中,并 通过输入、输出參数或输入/输出參数与其调用者交换信息。
过程和函数的唯一差别是函数总向调 用者返回数据,而过程则不返回数据。
2:建立存储过程 在 ORACLE SERVER 上建立存储过程,能够被多个应用程序调用,能够向存储过程传递參数,也能够向存储 过程传回參数 创建过程语法: CREATE [OR REPLACE] PROCEDURE Procedure_name [ (argment [ { IN | IN OUT }] Type, argment [ { IN | OUT | IN OUT } ] Type ] [ AUTHID DEFINER | CURRENT_USER ] { IS | AS } <类型.变量的说明> BEGIN <执行部分> EXCEPTION <可选的异常错误处理程序> END; 3:例题: --定义一个存储过程,获取给定部门的工资总和(通过out參数)。要求部门号和工资总和定义为參数 create or replace procedure get_sal3(dept_id number , sum_salary out number) is cursor salary_cursor is select salary from employees where department_id = dept_id; begin sum_salary := 0; for c in salary_cursor loop sum_salary := sum_salary + c.salary; end loop; dbms_output.put_line(sum_salary); end; select get_sal3(60,) --对给定部门的员工进行加薪操作。若其到公司的时间是在(?-95)期间,为其加薪5% --(95,98)加薪3%,(98,如今)加薪1%,得到下面返回结果: --此次加薪公司每一个月额外付出多少成本(定义一个out型的输出參数) create or replace procedure get_money(dept_id number , temp_sal out number) is v_i number(4,2):=0; cursor salary_cursor is select employee_id , salary ,hire_date from employees where department_id = dept_id; begin temp_sal := 0; for c in salary_cursor loop if to_char(c.hire_date,'yyyy')<'1995' then v_i := 0.05; elsif to_char(c.hire_date,'yyyy')<'1998' then v_i := 0.03; else v_i := 0.01 ; end if; --更新工资 update employees set salary = salary * (1+v_i) where employee_id = c.employee_id; --计算付出的成本 temp_sal := temp_sal + c.salary*v_i; end loop; dbms_output.put_line(temp_sal); end; 4:调用存储过程: declare v_temp number(10):=0; begin get_money(80,v_temp); end;
相关文章
- SQL与ORACLE中存储过程调用存储过程返回的结果集插入到临时表写法
- Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询
- Oracle数据库:oracle内连接inner join on,多表查询各种自链接、内连接、外连接的练习示例
- Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样
- Oracle数据库:啥是oracle数据库?你为啥要学oracle?
- [转]Oracle存储过程给变量赋值的方法
- [转]Oracle存储过程总结
- oracle 存储过程重新编译方法
- Oracle启动
- Oracle存储过程中异步调用的实际操作步骤
- oracle 性能优化建议小结
- mybatis调用oracle存储过程
- Oracle to_date()函数的用法介绍
- jdbc调用 oracle 存储过程操作
- ORACLE之PACKAGE-包、存储过程、函数
- oracle函数 SUM([distinct|all]x)
- 转: oracle 存储过程 执行动态 实现sql
- 【12.2新特性】在Oracle Active Data Guard上部署列式存储
- Oracle数据库分页的存储过程
- oracle存储过程含参数的插入数据
- [置顶] Oracle job procedure 存储过程定时任务
- oracle 切换ORACLE_SID cat /u02/oracle/product/11.2.0/network/admin/tnsnames.ora cd /u02/oracle/product/11.2.0/dbs
- ORACLE小工具:存储过程清空所有表或使所有触发器失效
- Oracle采用自己的公有云作为ZFS阵列的后端存储