注意:关于示例所讲到的存储过程和函数及数据库表的创建,可通过查看之前的文章有进行介绍。。。
存储过程和存储函数创建以后,用户可以查看存储过程和存储函数的状态和定义。用户可以通过SHOW STATUS语句查看存储过程和存储函数状态,也可以通过SHOW CREATE语句来查看存储过程和存储函数的定义。
查看存储过程和存储函数
1 SHOW STATUS语句
在MySQL中,可以通过SHOW STATUS语句查看存储过程和存储函数的状态。其基本语法结构如下:
SHOW {PROCEDURE | FUNCTION} STTATUS[LIKE 'pattern']
其中,RPOCEDURE参数标识查询存储过程;FUNCTION参数表示查询存储函数;LIKE 'pattern'参数表示匹配存储过程或存储函数的名称
2 SHOW CREATE语句
MySQL中可以通过SHOW CREATE 语句来查看存储过程和函数的状态,其语法结果如下:
SHOW CREATE{PROCEDURE | FUNCTION} sp_name;
其中,PROCEDURE参数表示存储过程;FUNCTION参数表示查询存储函数;sp_name参数表示存储过程或函数的名称。
3 示例:查询count_of_student的存储过程,其代码如下:
show create procedure count_of_student;
说明:
show status语句只能查看存储过程或是函数所操作的数据库对象,如存储过程的名称、类型、定义者、修改实践等信息,并不能查询存储过程或函数的具体定义。如果需要查看详细定义,需要使用SHOW CREATE语句。
修改存储过程和存储函数
修改存储过程和存储函数是指修改已经定义好的存储过程和函数。MySQL中通过ALTER PROCEDURE语句来修改存储过程,通过ALTER FUNCTION语句来修改存储函数。
MySQL中修改存储过程和存储函数的语句形式如下:
ALTER {PROCEDURE | FUNCTION} sp_name
[characteristic ...]
characteristic:
{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}
| SQL SECURITY {DEFINER | INVOKER}
| COMMENT 'string'
其参数说明如下表:
示例:下面对count_of_student的存储过程进行修改:
alter procedure count_of_student modifies sql data sql security invoker;
说明:
如果读者希望查看修改后的结果。可以应用SELECT ...FROM studentinfo.ruotines where routine_name='sp_name'来查看表的信息。由于篇幅限制,这里不进行详细解释。
删除存储过程和存储函数
删除存储过程和存储函数指删除数据库中已经存在的存储过程或存储函数。MySQL中通过DROP PROCEDURE语句来删除存储过程,通过DROP FUNCTION语句来删除存储函数。在删除之前,必须确认该存储过程或函数没有任何依赖关系,否则可能会导致其他与其关联的存储过程无法运行。
删除存储过程和存储函数的语法如下。
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
其中,sp_name参数表示存储过程或存储函数的名称;IF EXISTS是MySQL的扩展,判断存储过程或函数是否存在,以免发生错误。
示例
删除名为count_of_student的存储过程,其关键代码如下:
drop rpocedure count_of_student;
删除名为name_of_student的存储函数,其代码如下:
drop function name_of_student;
当返回结果没有提示警告或报错时,则说明存储过程或者存储函数已经被顺利删除。用户可以通过查询students数据库下的Routines表来确认上面的删除是否成功。