简单理解存储过程
存储过程是什么
存储过程(Stored Procedure) 是在数据库系统中,一组为了完成特定功能的
SQL
语句集,它存储在数据库中,一次编译后永久有效,用户通过调用存储过程并传递参数来执行它。
- 存储过程是用于特定操作的pl/sql语句块。
- 存储过程是预编译过的,经优化后存储在sql内存中,使用时无需再次编译,提高了使用效率。
- 存储过程的代码直接存放在数据库中,一般直接通过存储过程的名称调用,减少了网络流量,加快了系统执行效率。
存储过程与函数的区别
- 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
- 对于存储过程来说可以返回参数(output),而函数只能返回值或者表对象。
- 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于
FROM
关键字的后面。
存储过程的创建与调用
创建
CREATE [OR REPLACE] PROCEDURE procedure_name (parameter1[model] datatype1, parameter2[model] datatype2..)
IS[AS]
BEGIN
<PL/SQL>;
END [procedure_name];
- parameter用于指定参数,model用于指定参数模式,datatype用于指定参数类型。
- 定义存储过程的参数时,只能指定数据类型,不能指定数据长度。
- IS/AS用于开始PL/SQL代码块。
- 创建存储过程时,既可以指定参数也可以不指定任何参数。
例如
create procedure pd_select_student_by_name(s_name nvarchar(20))
is
begin
select * from student where stu_name = s_name;
end;
编译
ALTER PROCEDURE procedure_name COMPILE
调用
execute procedure_name
或者
DECLARE
param1 number;
param2 VARCHAR2(10) := '~Hello~';
BEGIN
procedure_name(param1, param2);
END;
删除
DROP PROCEDURE procedure_name;