pl/sql的存储过程

 2023-09-15 阅读 18 评论 0

摘要:1.存储过程的用途和使用场景 一般的sql语句每执行一次就编译一次,而存储过程只在创造时编译,以后每次执行存储过程都不需要再重新编译,所以使用存储过程可提高数据库执行速度。 当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时&

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

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

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

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

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

2.如何创建存储过程

语法:

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

在这里插入图片描述

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

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

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

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

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

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

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

5.存储过程案例

查询存储过程sql语句,对给定部门(作为输入参数)的员工进行加薪操作,到公司时间
在(?,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);

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/59789.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息