工具:SQLyog Enterprise、SecureCRT 5.0
客户端创建存储过程:
1.创建存储过程
客户端选择数据库,在Stored Proces文件夹下右健单击,选择Create Stored Procedure.....
在弹出的提示框中输入存储过程名称,点击Create按钮
创建效果如下图
DELIMITER $
DROP PROCEDURE IF EXISTS HelloWorld$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `XXXXX`.`HelloWorld`()
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
END$
DELIMITER ;
2.在BEGIN和END$$之间输入内容
DELIMITER $
DROP PROCEDURE IF EXISTS HelloWorld$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `XXXXX`.`HelloWorld`()
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
SELECT "HelloWorld";
END$
DELIMITER ;
说明:
1).DELIMITER 命令确保把'$$'作为语句的终结条件,通常,MYSQL会把 ';'作为语句终结,但是因为存储过程休中包含多个';'符号,因此将语句的终结条件进行转义;
2).DROP PROCEDURE IF EXISTS 语句确保在同名存储过程已存在的情况下将其移除;
3).CREATE PROCEDURE 指示一个存储过程定义开始;
4).BEGIN 指示存储过程程序开始,所有超过一个语句的存储过程程序必须用至少一个BEGIN-END块来定义程序的开始和结束;
5).SELECT "HelloWorld"; 一个简单的语句;
6).END$$ 结束存储过程;
3.编译刚刚创建的存储过程
选中存储过程全部内容,运行客户端的Execute All Queries按钮,编译确认编写的存储过程无异常;
4.运行存储过程
1).客户端调用存储过程
存储过程程序后书写调用语句 CALL HelloWorld();
选中些调用语句,运行Execute All Queries按钮,返回存储过程结果
2).连接mysql命令行客户端;
1.mysql -uroot -pcanada XXXX(数据库名称);
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2811144
Server version: 5.5.9-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
2.调用存储过程;
mysql>CALL HelloWorld();
3.显示结果;
+------------+
| HelloWorld |
+------------+
| HelloWorld |
+------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)