Home > Database > Mysql Tutorial > body text

MySQL5的存储过程详细实例

WBOY
Release: 2016-06-07 17:51:45
Original
1069 people have browsed it

本文章来介绍一下关于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)
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,只能跟@,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会释放,!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!