mysql存储过程和视图(存储过程和函数)
mysql存储过程和视图(存储过程和函数)3、proc_parameter为指定存储过程的参数列表,列表形式为[IN|OUT|INOUT] param_name type。其中,IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出,param_name表示参数名称,type表示参数类型,该类型可以是MySQL数据库中的任意类型2、sp_name为存储过程的名字创建存储过程,需要使用CREATE PROCEDURE语句,语句基本格式如下:CREATE PROCEDURE sp_name([proc_parameter]) [characteristics ...] routine_body 解释一下:1、CREATE PROCEDURE为创建存储过程的关键字
什么是存储过程
简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表:
create database school; use school; create table student ( studentId int primary key auto_increment not null studentName varchar(10) not null studentAge int studentPhone varchar(15) ) insert into student values(null 'Betty' '20' '00000000'); insert into student values(null 'Jerry' '18' '11111111'); insert into student values(null 'Betty' '21' '22222222'); insert into student values(null 'Steve' '27' '33333333'); insert into student values(null 'James' '22' '44444444'); commit;
存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数的语句分别是:CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句来调用存储过程,只能用输出变量返回值。函数可以从语句外调用(即通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。
创建存储过程
创建存储过程,需要使用CREATE PROCEDURE语句,语句基本格式如下:
CREATE PROCEDURE sp_name([proc_parameter]) [characteristics ...] routine_body
解释一下:
1、CREATE PROCEDURE为创建存储过程的关键字
2、sp_name为存储过程的名字
3、proc_parameter为指定存储过程的参数列表,列表形式为[IN|OUT|INOUT] param_name type。其中,IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出,param_name表示参数名称,type表示参数类型,该类型可以是MySQL数据库中的任意类型
2、调用存储函数
MySQL中调用存储函数的使用方法和MySQL内部函数的使用方法是一样的,无非存储函数是用户自己定义的,内部函数是MySQL开发者定义的。
我们调用一下上面定义的NameByZip那个函数:
select NameByZip();
运行结果为:
可以对照一下,studenName为"James"这一条,对应的studentPhone就是"44444444",符合SELECT出来的结果
查看、删除存储过程和函数
1、查看存储过程和函数的状态
SHOW STATUS可以查看存储过程核函数的状态,其基本语法结构如下:
SHOW {PROCEDURE | FUNCTIOn} STATUS [LIKE 'pattern'
这个语句是一个MySQL的扩展,他返回子程序的特征,如数据库、名字、类型、创建者及创建和修改日期。如果没有指定样式,根据使用的语句,所有存储过程或存储函数的信息都被列出。PROCEDURE和FUNCTIOn分别表示查看存储过程和函数,LIKE语句表示匹配存储过程或函数的名称。
举个例子:
SHOW PROCEDURE STATUS
运行结果为:
后面还有一些字段,截图截不全没办法。查看存储函数也一样,可以自己试试看。
2、查看存储过程和函数的定义
除了SHOW STATUS外,还可以使用SHOW CREATE来查看存储过程的定义,基本格式为:
SHOW CREATE {PROCEDURE | FUNCTION} sp_name
比如:
SHOW CREATE FUNCTION NameByZip
我查看了NameByZip这个函数的定义,结果为:
这个Create Function字段就是创建的存储函数的内容
3、删除存储过程和函数
删除存储过程核函数,可以使用DROP语句,基本语法如下:
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
这个语句被用来移除一个存储过程或函数。sp_name为待移除的存储过程或函数的名称。
IF EXISTS子句是一个MySQL的扩展,如果程序或函数不存储,它可以防止错误发生,产生一个用SHOW WARNINGS查看的警告。举个例子:
DROP PROCEDURE CountStudent DROP FUNCTION NameByZip;
这么简单就可以了。注意这里没有讲修改存储过程和存储函数,因为修改存储过程或者函数只能修改存储过程或者存储函数的特性,不能直接对已有的存储过程或函数进行修改,如果必须要改,只能先DROP在重新编写代码,CREATE一个新的。