mysql exec函数_Mysql使用小结:(1) 存储过程,循环,实现Mssql Server功能的exec的方法...

最近开始总结自己学习的Mysql的经验,在这里跟大家分享。很希望大家很拍板砖,谢谢。

先说说,为什么我要学习Mysql的存储过程,因为Mysql在单纯的Script(脚本)里面,不支持循环。大家可以参考相关的文档。

先给出代码:

DELIMITER $$DROPPROCEDUREIFEXISTS`dowhile` $$CREATEPROCEDURE`dowhile`()

DETERMINISTICBEGINDECLAREv1INTDEFAULT1000;declaretablenamevarchar(10)default'testTable';declarecreateStringvarchar(1000);whilev1<>0DOset@nextTable=concat(tablename,v1);setcreateString=concat("createtable`",@nextTable);setcreateString=concat(createString,"` ( `id`intnull, `name`varchar(200)null); ");set@mytable=createString;select@mytable;PREPAREstmt_nameFROM@mytable;EXECUTEstmt_name ;DEALLOCATEPREPAREstmt_name;setv1=v1-1;ENDwhile;END$$

DELIMITER ;

第一步:建立一个Mysql存储过程,必须要注意的地方是:一定要使用 DELIMITER(定界符这个)关键字,否则会产生ErrorNum:1064。这点无论是使用命令行还是Mysql Tools(Workbench)都必须遵守。

具体参考:http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html ,又一次证明了,仔细阅读文档很重要。

更多参考:http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html

第二步:使用循环,必须在Mysql存储过程中,希望Mysql新版本可以进行改进。

原文

be used in the body of stored programs: Stored procedures and functions, triggers, and events. These objects are defined in terms of SQL code that is stored on the server for later invocation

具体参考:http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.html

第三步:使用PREPARE命令,打开一个Stmt,不要忘记关上。

具体参考:http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html

小结:

我这里使用循环,但是实际完成建表过程,只实现了300次。是不是在存储过程中,循环有限制?

探索1:循环限制,设置while循环最大循环数为100000,没有任何问题。时间:0.406秒 。(双核 2.47)

探索2:                                      循环数为10000000,没有任何问题。时间:27.753秒。

探索3:                                      循环数为20000000,没有任何问题。时间:48.578秒。

超过30秒的限制。

当超过10分钟之后,连接断开。主要分析,发现Workbench有一个自己的数据库连接时间,10分钟。

通过阅读发现了Mysql的超时设置是interactive_timeout = wait_timeout:28800s (480min) 6小时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值