[MySQL相关]什么是存储过程?

2020-04-10T00:58:00

存储过程 Procedure 是一组为了完成特定功能的 SQL 语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程理解的简单一点就是 “数据库中的程序”,可以在不需要外部程序(如 C,java 等)的情况下,让数据库自己解决复杂的、用一般 sql 不能实现的功能,它具备这些优点:

  1. 使用存储过程,相似的删,改,增等操作可以重复调用,方便且便于管理!
  2. 因为 SQL 语句已经预编绎过了,因此运行的速度比较快。
  3. 可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
  4. 运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
  5. 主要是在服务器上运行,减少对客户机的压力。
  6. 可包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
  7. 可在单个存储过程中执行一系列 SQL 语句。
  8. 可从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

一个完整的存储过程示例

delimiter $$  # 修改结束符为$$, 以免程序把begin...end之间的;作为结束符
drop procedure if exitsts proc_p1 $$  # 如果已经存在proc_p1就先删除
create procedure proc_p1(
    in i1 int  # 需要一个int类型的参数
)
begin  # sql逻辑代码要放在begin...end之间
    declare d1 int;  # 声明一个d1变量
    declare d2 int default 3;  # 声明一个默认值为3的d2变量
    set d1 = i1 + i2;
    select *from man_to_women where nid > d1;
end $$
deliniter ;  # 修改结束附为默认的分号,以免影响其他语句

  # 调用存储过程
call proc_p1(2)
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »