快捷搜索:  汽车  科技

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();

运行结果为:

mysql存储过程和视图(存储过程和函数)(1)

可以对照一下,studenName为"James"这一条,对应的studentPhone就是"44444444",符合SELECT出来的结果

查看、删除存储过程和函数

1、查看存储过程和函数的状态

SHOW STATUS可以查看存储过程核函数的状态,其基本语法结构如下:

SHOW {PROCEDURE | FUNCTIOn} STATUS [LIKE 'pattern'

这个语句是一个MySQL的扩展,他返回子程序的特征,如数据库、名字、类型、创建者及创建和修改日期。如果没有指定样式,根据使用的语句,所有存储过程或存储函数的信息都被列出。PROCEDURE和FUNCTIOn分别表示查看存储过程和函数,LIKE语句表示匹配存储过程或函数的名称。

举个例子:

SHOW PROCEDURE STATUS

运行结果为:

mysql存储过程和视图(存储过程和函数)(2)

后面还有一些字段,截图截不全没办法。查看存储函数也一样,可以自己试试看。

2、查看存储过程和函数的定义

除了SHOW STATUS外,还可以使用SHOW CREATE来查看存储过程的定义,基本格式为:

SHOW CREATE {PROCEDURE | FUNCTION} sp_name

比如:

SHOW CREATE FUNCTION NameByZip

我查看了NameByZip这个函数的定义,结果为:

mysql存储过程和视图(存储过程和函数)(3)

这个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一个新的。

mysql存储过程和视图(存储过程和函数)(4)

猜您喜欢: