DO
statement_list
END WHILE [end_label]
其中,search_condition参数表示循环执行的条件,满足该条件时循环执行;
statement_list参数表示循环的执行语句。
下面是一个ITERATE语句的示例。代码如下:
WHILE @count<100 DO
SET @count=@count+1;
END WHILE ;
该示例循环执行count加1的操作,count值小于100时执行循环。
如果count值等于100了,则跳出循环。WHILE循环需要使用END WHILE来结束。
调用存储过程和函数
存储过程和存储函数都是存储在服务器端的SQL语句的集合,要使用这些已经定义好的存储过程和存储函数就必须要通过调用的方式来实现
存储过程是通过CALL语句来调用的。而存储函数的使用方法与MySQL内部函数的使用方法是一样的
执行存储过程和存储函数需要拥有EXECUTE权限
EXECUTE权限的信息存储在information_schema数据库下面的USER_PRIVILEGES表中
?
调用存储过程
MySQL中使用CALL语句来调用存储过程。调用存储过程后,数据库系统将执行存储过程中的语句。
然后,将结果返回给输出值。
CALL语句的基本语法形式如下:
CALL sp_name([parameter[,…]]) ;
其中,sp_name是存储过程的名称;parameter是指存储过程的参数。
CALL proc()

?
?
调用存储函数
在MySQL中,存储函数的使用方法与MySQL内部函数的使用方法是一样的。
换言之,用户自己定义的存储函数与MySQL内部函数是一个性质的。
区别在于,存储函数是用户自己定义的,而内部函数是MySQL的开发者定义的。
下面定义一个存储函数,然后调用这个存储函数。
代码执行如下:
-- 创建存储函数
DELIMITER //
CREATE FUNCTION name_from_t3(id INT )
RETURNS CHAR(80)
RETURN (SELECT NAME FROM t3 WHERE id=id );
//
DELIMITER ;
SELECT name_from_t3(2);

上述存储函数的作用是根据输入的id值到t3表中查询记录。
查询出id字段的值等于id的记录。然后将该记录的name字段的值返回。
查看存储过程和函数
存储过程和函数创建以后,可以查看存储过程和函数的状态和定义。
通过SHOW STATUS语句来查看存储过程和函数的状态,也可以通过SHOW CREATE语句来查看存储过程和函数的定义。
通过查询information_schema数据库下的Routines表来查看存储过程和函数的信息
?
1、SHOW STATUS语句查看存储过程和函数的状态
MySQL中可以通过SHOW STATUS语句查看存储过程和函数的状态。其基本语法形式如下:
SHOW { PROCEDURE | FUNCTION } STATUS [ LIKE ' pattern ' ] ;
其中,PROCEDURE参数表示查询存储过程;FUNCTION参数表示查询存储函数;
LIKE ' pattern '参数用来匹配存储过程或函数的名称。
?
下面查询名为name_from_t3的函数的状态。代码执行如下:
SHOW FUNCTION STATUS LIKE '%name_from_t3%'
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
------ ------------ -------- -------------- ------------------- ------------------- ------------- ------- -------------------- -------------------- ------------------
school name_from_t3 FUNCTION root@localhost 2014-06-21 18:52:39 2014-06-21 18:52:39 DEFINER utf8 utf8_general_ci utf8_general_ci
查询结果显示了函数的创建时间、修改时间和字符集等信息。
?
注意:SHOW STATUS语句只能查看存储过程或函数是操作哪一个数据库、存储过程或函数的名称、类型、谁定义的、创建和修改时间、字符编码等信息。
但是,这个语句不能查询存储过程或函数的具体定义。如果需要查看详细定义,需要使用SHOW CREATE语句
?
2、SHOW CREATE语句查看存储过程和函数的定义
MySQL中可以通过SHOW CREATE语句查看存储过程和函数的状态。其基本语法形式如下:
SHOW CREATE { PROCEDURE | FUNCTION } sp_name ;
其中,PROCEDURE参数表示查询存储过程;
FUNCTION参数表示查询存储函数;
sp_name参数表示存储过程或函数的名称
?
下面查询名为name_from_t3的函数的定义。代码执行如下
SHOW CREATE FUNCTION name_from_t3
Function sql_mode Create Function character_set_client collation_connection Database Collation
------------ -------- ----------------------------------------------------------------------------------------------------------------------------------------------- -------------------- -------------------- ------------------
name_from_t3 CREATE DEFINER=`root`@`localhost` FUNCTION `name_from_t3`(id INT ) RETURNS char(80) CHARSET utf8 utf8 utf8_general_ci utf8_general_ci
RETURN (SELECT NAME FROM t3 WHERE id=id )
?
3、从information_schema.Routines表中查看存储过程和函数的信息
存储过程和函数的信息存储在information_schema数据库下的Routines表中。可以通过查询该表的记录来查询存储过程和函数的信息。
其基本语法形式如下:
SELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME=' sp_name ' ;
其中,ROUTINE_NAME字段中存储的是存储过程和函数的名称;
sp_name参数表示存储过程或函数的名称。
下面从Routines表中查询名为name_from_t3函数的信息。
代码执行如下:
SELECT * FROM