MySQL5的存储过程详细实例
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-13 13:56:08 浏览: 评论:0
本文章来介绍一下关于mysql5的新特性存储过程了,在mysql5之前是没有存储过程这一说的,下面我们来看看mysql5存储过程的用法.
MySQL 5.0:新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的,简单的来说是介绍了“存储过程、触发器、视图、信息架构视图.
格式:
- CREATE PROCEDURE 过程名 ([过程参数[,...]])
- [特性 ...] 过程体
- CREATE FUNCTION 函数名 ([函数参数[,...]])
- RETURNS 返回类型
- [特性 ...] 函数体
过程参数:[ IN | OUT | INOUT ] 参数名 参数类型
函数参数:参数名 参数类型
返回类型:有效的MySQL数据类型即可
特性:
- LANGUAGE SQL
- | [NOT] DETERMINISTIC
- | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
- | SQL SECURITY { DEFINER | INVOKER }
- | COMMENT 'string'
过程体/函数体:格式如下:
- BEGIN
- 有效的SQL语句
- END
实例:
- DELIMITER $$
- DROP PROCEDURE IF EXISTS `spTest` $$
- CREATE PROCEDURE `spTest`(p_title VARCHAR(200), p_description TEXT) --phpfensi.com
- DETERMINISTIC
- BEGIN
- INSERT INTO category (title, description)
- VALUES (p_title, p_description);
- END $$
- DELIMITER ;
其中DELIMITER是用来决定SQL分隔符号的,在写Stored Procedure前,要先把预设的分号换掉,写完 Stored Procedure 的 routine_body 后,再回复成预设的分号.
--删除:drop procedure if exists up_common_select
--创建
- CREATE PROCEDURE `up_common_select`(
- in t_name varchar(50)
- )
- begin
- declare v_sql varchar(500);
- set v_sql= concat('select * from ',t_name);
- select v_sql;
- --
--注意:prepare(预处理)execute stmt using @var,只能跟@var变量,declare和传入的变量不行!!!
- set @v_sql=v_sql;
- prepare stmt from @v_sql;
- EXECUTE stmt ;
- deallocate prepare stmt;
- end;
--调用:call up_common_select('admin_authority');
注意事项:
1 mysql5.0.13之后支持在存储过程中调用prepare
2, prepare stmt from 'select * from ?';(错)
mysql5.0.24,prepare尚不支持 表名做变量!
解决方案:用 contat()函数,组合字符串
3. execute stmt [using @var,@var2]
必须是@var形式的变量,传入的参数变量,declare变量不行
4.deallocate prepare stmt; 显式的释放prepare,如果不释放,mysql会释放,!
Tags: mysql5存储过程 mysql5创建过程
- 上一篇:mysql中数据库索引与优化
- 下一篇:mysql数据库修改密码方法
相关文章
- ·mysql5存储过程入门创建,删除,调用详解(2014-10-07)
- ·php调用mysql5存储过程方法(2014-10-14)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)