【MYSQL笔记3】MYSQL过程式数据库对象之存储过程的调用、删除和修改
程序员文章站
2022-07-06 11:54:33
mysql从5.0版本开始支持存储过程、存储函数、触发器和事件功能的实现。 我们以一本书中的例题为例:创建xscj数据库的存储过程,判断两个输入的参数哪个更大。并调用该存储过程。 (1)调用 首先,创建存储过程(procedure),名为xscj.compar 执行结果如下: 在上边的语句中: cr ......
mysql从5.0版本开始支持存储过程、存储函数、触发器和事件功能的实现。
我们以一本书中的例题为例:创建xscj数据库的存储过程,判断两个输入的参数哪个更大。并调用该存储过程。
(1)调用
首先,创建存储过程(procedure),名为xscj.compar
delimiter $$ create procedure xscj.compar (in k1 integer, in k2 integer, out k3 char(6) ) begin if k1>k2 then set k3='大于'; elseif k1=k2 then set k3='等于'; else set k3='小于'; end if; end$$ delimiter ;
执行结果如下:
在上边的语句中:
create 语句是创建存储过程,下行表示的是存储过程参数,in 表示输入参数, out 表示输出参数,inout 表示输入/输出参数,@表示用户变量;
if 语句是流程控制语句,当条件为真,执行对应的sql语句;
在代码的前一部分,因为在mysql中,服务器处理语句的时候是以分号为结束标志的,但是在创建存储过程的时候,存储过程可能包含多个sql语句,每个sql语句都是以分号为结尾的,这时服务器处理程序的时候遇到第一个分号就会认为程序结束,这肯定是不可行的。因此在使用"delimiter+结束符"的命令将mysql语句的结束标志修改为其他符号,最后在使用'opdelimiter ;'恢复以分号为结束标志。
存储过程创建完后,可以在程序、触发器或者其他存储过程中被调用,但是都必须使用call语句。
(2)删除
仍然使用drop语句
drop procedure if exists 过程名
(3)修改
可以使用
alter procedure 存储过程 [特征...]
来修改存储过程的某些特征;但是如果要修改存储过程的内容,可以使用先删除再重新定义存储过程的方法。