PL/SQL存储过程
一.什么是PL/SQL存储过程?和函数的区别?
-
存储过程的定义:
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 -
存储过程和函数的区别:
存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。存储过程可以没有或者有多个返回值,函数必须有一个返回值。
二.存储过程的优缺点
1.优点
(1)增强SQL语言的功能和灵活性;
(2)存储过程被创建后,可以在程序中被多次调用,预编译的;
(3)较快的执行速度;
(4)减少网络流量;
(5)保证数据的安全。
2.缺点
(1)可移植性差;
(2)对于简单的SQL语句,存储过程没什么优势;
(3)存储过程中不一定会减少网络传输;
(4)如果只有一个用户使用数据库,那么存储过程对安全也没什么影响 ;
(5)团队开发时需要先统一标准,否则后期维护成本大;
(6)在大并发量访问的情况下,不宜写过多涉及运算的存储过程 ;
(7)业务逻辑复杂时,特别是涉及到对很大的表进行操作的时候,不如在前端先简化业务逻辑。
三.存储过程的创建
1.无参数存储过程语法
create or replace procedure 存储过程名 is/as
-- is/as和Begin之间为声明部分
Begin
语句执行部分;
End [存储过程名]; ---end后面的存储过程名可省略
2.带参数的存储过程语法
create or replace procedure 存储过程名(参数 in/out/in out 数据类型) is/as
-- is/as和Begin之间为声明部分
Begin
语句执行部分;
End [存储过程名]; ---end后面的存储过程名可省略
3.存储过程参数模式说明
存储过程参数有三种模式,为in模式,out模式,in out 模式。
(1) in 模式
in模式的参数 ,只能在调用的时候给它传入一个值使用,不能作为赋值目标;
(2) out 模式
Out模式的输出参数,在调用的时候外界需再声明一个变量来接收存储过程中的输出参数的值;一个过程中,如果有输出参数(OUT 参数),在调用过程的时候,也要传入一个参数, 这个参数可以不用在调用的地方进行赋值,就直接传入一个声明好的一个变量,用来接收存储过程中的输出参数的值(OUT参数)。即Out输出参数可作为赋值目标,再传给外界的调用者。
(3) in out 模式
in out 模式既可以作为输入,也可以作为输出。
注意:存储过程的形式参数指定数据类型时,不能指定长度,否则会报错。