返回

数据库存储过程

简单理解存储过程

存储过程是什么

存储过程(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;