1.存储过程的用途和使用场景

  1. 一般的sql语句每执行一次就编译一次,而存储过程只在创造时编译,以后每次执行存储过程都不需要再重新编译,所以使用存储过程可提高数据库执行速度。

  2. 当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。

  3. 存储过程可以重复使用,可减少数据库开发人员的工作量。

  4. 安全性高,可设定只有某此用户才具有对指定存储过程的使用权

2.如何创建存储过程

语法:

create [or replace] procedure 过程名(参数列表)
AS
-- AS相当于PLSQL程序中的declare,AS关键字不可以省略,
declare可以在没有声明任何变量/cursor/exception时可以省略。
PLSQL子程序体

3.存储过程中AS/IS的区别

在Oracle的存储过程和函数中,其实IS和AS是同义词,没有什么区别。

还有在自定义类型(TPYE)和包(PACKAGE)时,使用IS和AS也并没有什么区别。

但是在创建视图(VIEW)时,只能使用AS而不能使用IS。

在声明游标(CURSOR)时,只能使用IS而不能使用AS。

4.存储过程和存储函数的区别

一般来讲,过程和函数的区别在于函数可以有一个返回值;而过程没有返回值。但过程和函数都可以通过 out 指定一个或多个输出参数。我们可以利用 out 参数,在过程和函数中实现返回多个值。
本质区别:
存储函数有返回值,而存储过程没有返回值。
3.1 如果存储过程想实现有返回值的业务,我们就必须使用out类型的参数。
3.2 即便是存储过程使用了out类型的参数,起本质也不是真的有了返回值,
3.3 而是在存储过程内部给out类型参数赋值,在执行完毕后,我们直接拿到输出类型参数的值。

5.存储过程案例

对给定部门(作为输入参数)的员工进行加薪操作,到公司时间
在(?,1995)期间,为其加薪5%,
在(1995,1998)之间加薪3%,
在(1998,?)的加薪1%
并得到此次加薪公司每月需要额外付出多少成本(out 型参数)

create or replace procedure add_sal(dept_id number, temp out number ) //temp为输出参数 out型
is//定义一个游标corsor sal_corsor is select  employee_id ,salary, hire_date  from salary where department_id = dept_id//定义一个变量 为加薪比例v_i number :=0;
begintemp := 0for c in sal_corsor loop  //循环if to_cahr (c.hire_date,'yyyy') < '1995' then v_i := 0.05;else if to_cahr (c.hire_date,'yyyy')  < '1998' v_i :=0.03;else v_i :=0.01;else if;//更新工资update employee set salary = salary*(1+v_i) where employee_id = c.employee_id;//计算付出的成本temp := temp + salary * v_i;end loop;
end;

测试存储过程

//给80号部门加薪
declarev_temp  number(10) :=0
beginadd_sal(80, v_temp);

pl/sql的存储过程相关推荐

  1. Oracle如何使用PL/SQL调试存储过程

    Oracle如何使用PL/SQL调试存储过程 PL/SQL中提供了[调试存储过程]的功能,可以完成存储过程的预编译与测试. 点击要调试的存储过程,右键选择TEST 如果需要查看变量,当然调试都需要.在 ...

  2. PL/SQL中存储过程int和out的用法

    PL/SQL中存储过程int和out的用法 一 介绍 过程和函数中的in和out (1)一般来讲,过程和函数的区别在于函数可以有一个返回值:而过程没有返回值. (2)但过程和函数都可以通过out指定一 ...

  3. 【学亮IT手记】PL/SQL编程-存储过程

    存储过程实际上就是一种命名的PL/SQL程序块. 创建存储过程 创建存储过程需要使用procedure关键字. 创建存储过程不需要使用DECLARE关键字,转而使用CREATE/REPLACE关键字. ...

  4. PL/SQL调试存储过程

    如何调试oracle存储过程 PL/SQL中为我们提供了调试存储过程的功能,可以帮助你完成存储过程的预编译与测试. 点击要调试的存储过程,右键选择TEST 如果需要查看变量,当然调试都需要.在右键菜单 ...

  5. PL/SQL编程-存储过程

    概念: 存储过程,简称"存储"或者"存过",是一种命名的PL/SQL程序块,也是工作中用到最多的命名块,数据库中的大多数程序都是以存储过程的形式存放在数据库里. ...

  6. PL/SQL之存储过程

    一.什么是存储过程?         在Oracle数据库中,可以将一些固定的操作集中起来由Oracle数据库服务器来完成,以实现某个任务,这就是存储过程. 二.存储过程有什么优点?         ...

  7. [PL/SQL]使用存储过程实现导出指定数据到文件(仿EXP)|转|

    源自 crkying:http://blog.csdn.net/edcvf3/article/details/8633247 由于EXP不能导出表的指定字段(其实也可通过CREATE TABLE  t ...

  8. 百倍性能的PL/SQL优化案例(r11笔记第13天)

    我相信你是被百倍性能的字样吸引了,不过我所想侧重的是优化的思路,这个比优化技巧更重要,而结果嘛,其实我不希望说成是百倍提升,""自黑""一下. 有一个真实想法和 ...

  9. 金仓数据库KingbaseES 迁移工具—PL/SQL中Oracle和KingbaseES 的对比

    关键字: KingbaseES.PL/SQL.存储过程.函数 一.PL/SQL语言兼容特性 在 PL/SQL 语言方面,KingbaseES 提供了大量的Oracle 兼容特性.这些特性使得大多数的 ...

最新文章

  1. 《java多线程编程实战指南 核心篇》读书笔记三
  2. 《他其实没那么喜欢你》经典台词
  3. 8266串口调试助手_开源软件分享-基于WPF的串口调试工具
  4. [渝粤教育] 西南科技大学 电子产品制造工艺 在线考试复习资料
  5. STL - MainTao - 博客园
  6. Mac下如何修改IDEA的背景颜色
  7. java 正则表达式 compile_JAVA 正则表达式
  8. 密歇根州立大学计划投入4600万美元建设新数据中心
  9. MySQL中对索引的理解 特点 优势_深入理解MySQL索引和优化
  10. android 6.0 power按键深度解析
  11. Linux基础课程汇总-辛舒展-专题视频课程
  12. Vue的ESLint-stylelint-prettier联合配置
  13. 用Python学《微积分B》(Taylor公式与曲线拟合)
  14. 中鑫优配热点前瞻:国防军工+数据安全+燃料电池+煤炭
  15. Could not set property ‘XXX‘ of ‘class XXX‘ with value ‘XX‘
  16. XMLHttpRequest——Level2
  17. scrapy代理IP
  18. JAVA入门基础(5)—— 流程控制
  19. RecyclerView 瀑布流错乱
  20. android 多语言设置

热门文章

  1. Java中==和equals、equals和hashCode的关系详解
  2. splitpane如何设置竖条的宽度_如何用 CSS 画三角形和箭头
  3. 光源时间_D65光源对色灯箱的操作步骤及作业标准
  4. Android基础——数据存储
  5. Hibernate关联关系映射-----单向一对一映射配置
  6. SpaceVim 1.1.0 发布,模块化 Vim IDE
  7. centos安装最新版的docker-ce(二进制安装)
  8. 成都至柬埔寨金边定期直飞航线开通
  9. 文字转语音文件的两种方法
  10. JS----贪吃蛇游戏