Mysql存储过程

此文仅作简单的说明

 

一、简介

我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。MySQL在5.0以前并不支持存储过程

 

二、创建存储过程

(一)修改结束符:

因为sql语句以分号";"结束,为了创建存储过程首先要修改一个结束符:

 

delimiter // 
select * from tablename  //

 

上边代码将结束符换成了"//"

  (二)创建存储过程:

现在可以创建一个存储过程了:

create procedure finduser (out username varchar(255))
reads sql data
begin
select name into username from userinfo where id=1; 
end
//
procedure是程序步骤的意思,可以理解为存储过程.其中finduser就是这个存储过程的名字 
括号中是存储过程的参数,out表示是输出参数,in表示输入参数。

MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:
CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...])
IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT 输出参数:该值可在存储过程内部被改变,并可返回
INOUT 输入输出参数:调用时指定,并且可被改变和返回

username就是参数名 而varchar(255)则是参数类型。参数类型有:int, float, date, varchar(length)
reads sql data 表明这个存储过程下面要用sql读取数据。
begin和end代表开始和结束

(三)调用存储过程:
call finduser(@n)//
select @n//
第一句敲回车执行后,会提示执行成功。第二步执行后或获取到结果。
在这里@后面即一个字符串,表明一个会话变量,在MYSQL中会话变量不用声明即可使用,会话变量在整个过程中都 有效,在这里,调用了存储过程,然后把结果存入了会话变量中,然后查询会话变量,即可查询到结果

(四)查询存储过程
  1、查询数据库下有哪些存储过程:

select name from mysql.proc where db=’数据库名’;

 

select routine_name from information_schema.routines where routine_schema='数据库名';

 

show procedure status where db='数据库名';

2、查询存储过程详细:

 

show create procedure  数据库.存储过程名;

 

(五)修改存储过程

ALTER PROCEDURE

更改用CREATE PROCEDURE 建立的预先指定的存储过程,其不会影响相关存储过程或存储功能。

(六)删除存储过程

删除一个存储过程比较简单,和删除表一样:

DROP PROCEDURE

从MySQL的表格中删除一个或多个存储过程。

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/orlion/p/4800854.html