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的表格中删除一个或多个存储过程。