MySQL procedure存储过程示例
2013-10-14 23:06
239 查看
前面讨论过,在做排行榜数据更新时,比较适合使用存储过程,原因有以下几点:
1、生成存储过程时将要执行的数据库语句编译后存入数据库,避免每次执行都要编译的麻烦,提高效率。
2、存储过程可以在需要的时候随时调用简单的 call basename.procname() 语句即可,方便调试与测试。
3、可以与程序交互,调用返回时表示存储过程执行完毕,如果成功则可以让程序放心地拉数据,如果失败则会返回错误原因。
当然,存储过程的用处远远不止于此。存储过程的编写基本上有以下格式:
其中,DELIMITER可以指定语句的结束符。在创建存储过程时可以在括号中指定输入或输出变量:in/out varname vartype ,in表示在执行时向数据库输入,out则可以将存储过程之后的变量返回。要执行则调用 call UPDATE_RANK(); 即可。
以下则是一个实际的例子,虽然有些牵强:
这个例子是往账号表中批量插入测试账号的,指定了两个输入变量,一个是账号数量,另一个则是账号名的前缀。最后在调用call之后则会插入1000个test*的账号名到账号表。
1、生成存储过程时将要执行的数据库语句编译后存入数据库,避免每次执行都要编译的麻烦,提高效率。
2、存储过程可以在需要的时候随时调用简单的 call basename.procname() 语句即可,方便调试与测试。
3、可以与程序交互,调用返回时表示存储过程执行完毕,如果成功则可以让程序放心地拉数据,如果失败则会返回错误原因。
当然,存储过程的用处远远不止于此。存储过程的编写基本上有以下格式:
DROP PROCEDURE IF EXIST UPDATE_RANK; DELIMITER // CREATE PROCEDURE UPDATE_RANK() BEGIN -------------------------- -- do something -------------------------- END ; // DELIMITER ;
其中,DELIMITER可以指定语句的结束符。在创建存储过程时可以在括号中指定输入或输出变量:in/out varname vartype ,in表示在执行时向数据库输入,out则可以将存储过程之后的变量返回。要执行则调用 call UPDATE_RANK(); 即可。
以下则是一个实际的例子,虽然有些牵强:
DELIMITER $$ DROP PROCEDURE IF EXIST create_accounts$$ create procedure `create_accounts`(in maxcount int , in prefix char(72)) BEGIN declare i int default maxcount; while i > 0 do insert into account set id=i,name=CONCAT(prefix,i); set i = i - 1; end while; end$$ DELIMITER ; call create_accounts(1000 , 'test');
这个例子是往账号表中批量插入测试账号的,指定了两个输入变量,一个是账号数量,另一个则是账号名的前缀。最后在调用call之后则会插入1000个test*的账号名到账号表。
相关文章推荐
- MySQL四个客户端工具的比较
- MySQL Replication/Synchronization (双机热备/同步复制)
- 卦卦学mysql系列(2)——mysql入门 对数据表的操作
- MySQL数据库系统安装与配置
- InnoDB还是MyISAM 再谈MySQL存储引擎的选择
- MySQL 超时问题
- mysql中的 IN和FIND_IN_SET的查询问题
- Mysql中count(*),DISTINCT的使用方法和效率研究
- mysql使用rand随机查询记录的高效率方法
- MYSQL中MY.CNF配置文件及参数介绍
- 分页详解jsp+servlet+jdbc+mysql
- mysql补集合计算
- 关于mysql的MERGE存储引擎简单例子
- MySQL 权限修改(允许远程访问)
- [MySQL]命令行工具和基本操作
- Multi-Master Replication Manager for MySQL
- [MySQL] 管理表和索引的相关语句
- mysql性能的检查和调优方法
- 高性能的MySQL(4)数据类型的优化
- mysql的基本操作(初学者)