文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>浅谈Mysql存储过程

浅谈Mysql存储过程

时间:2010-07-28  来源:jinliangonline

自从来到现在公司以后,大部分时间都是在使用sqlserver2005。所以经常会用到存储过程、job。接触的多了自然而然就觉得sqlserver的客户端的强大、方便。这次是为了直接在discuz里生成若干条注册邀请码,想着直接写库多方便啊,就顺便把mysql的存储过程看了下。
其实从mysql5就已经开始支持存储过程及触发器,phpmyadmin中不支持直接编写对存储过程(我自己写了几次),所以就直接命令行吧:

/*这里才是真正的起点,首先看看该表的数据*/

mysql> select count(*) from cdb_invites;

+----------+

| count(*) |

+----------+

| 261 |

+----------+

1 row in set (0.00 sec)

PS,以下这段要注意的地方:
第一句:delimiter //   这是用mysql客户端delimiter命令来把语句定界符从 ;变为//
第二句:创建一个存储过程名称为:hi。没有参数需要传入
中间的就是声明局部变量,然后循环插入。
最后一句:end // 这才是真正的结束。
然后从现在开始,除非重新登录mysql。否则当前你操作的命令都是以 //结尾。

/*创建一个存储过程,目的是为向某个表循环插入若干条数据*/

mysql> delimiter //

mysql> create procedure hi()

    -> begin

    -> declare a int(10);

    -> set a=1;

    -> while a<100 do

    -> insert into cdb_invites values (1,1279616286,1280480286,'10.0.7.7',a,0,0,1);

    -> set a=a+1;

    -> end while;

    -> end //

Query OK, 0 rows affected (0.00 sec)


/*调用一次该存储过程。后查看该表,增加了99条新数据*/

mysql> call hi()//

Query OK, 1 row affected (0.01 sec)



mysql> select count(*) from cdb_invites//

+----------+

| count(*) |

+----------+

| 360 |

+----------+

1 row in set (0.00 sec)


/*显示创建存储过程hi的字符串内容*/
mysql> show create procedure hi//
+-----------+----------+----------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------+
| hi | | CREATE DEFINER=`root`@`localhost` PROCEDURE `hi`()
begin
declare a int(10);
set a=1;
while a<100 do
insert into cdb_invites values (1,1279616286,1280480286,'10.0.7.7',a,0,0,0);
set a=a+1;
end while;
end |
+-----------+----------+----------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


/*显示现有的存储过程*/
mysql> show procedure status//
+-----------------+--------------------+-----------+----------------+---------------------+---------------------+-----------

----+---------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment |
+-----------------+--------------------+-----------+----------------+---------------------+---------------------+----------+
| mhqy_bbs | hi | PROCEDURE | root@localhost | 2010-07-22 13:39:51 | 2010-07-22 13:39:51 | DEFINER | |
| mhqy_bbs | p1 | PROCEDURE | root@localhost | 2010-07-20 17:13:26 | 2010-07-20 17:13:26 | DEFINER | |
+-----------------+--------------------+-----------+----------------+---------------------+---------------------+----------+
2 rows in set (0.00 sec)


/*删除一个已有的存储过程,没搞懂mysql的alter,所以宁愿删除了再重新create */
mysql> drop procedure p1//
Query OK, 0 rows affected (0.00 sec)


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载