日期:2014-05-16  浏览次数:20752 次

Mysql那些事儿之(十二)存储过程

存储过程是经过编译之后存放在数据库中的sql语句集合。

存储过程怎么写

看例子:

存储过程的语法

create procedure proc_name (proc_peremeter1,.....)  --存储过程名称和参数
[characteristic ....] 
routine_body  --存储过程 

调用存储过程的语法

call proc_name  --调用存储过程

示例 创建存储过程

当然创建存储过程之前先建立相关的表,为了学习只建立一个简单的表结构;

CREATE TABLE filmall (
  id smallint(5) NOT NULL,
  film_id smallint(6) NOT NULL,
  name varchar(40) DEFAULT NULL,
  store_id smallint(6) NOT NULL,
  txt text,
  PRIMARY KEY (`id`)
) ;

在数据表里插入数据。

写一个简单的存储过程:

--存储过程的名称为proc_film_store,参数为3个:前面两个为输入,后面一个为输出
delimiter $$
create procedure proc_film_store (IN p_film_id INT,IN p_store_id INT,OUT p_film_count INT)
BEGIN
SELECT txt FROM filmall WHERE film_id = p_film_id AND store_id = p_store_id;
SELECT FOUND_ROWS() INTO p_film_count;  --将条数放入变量中
END $$
delimiter ;

?现在就可以调用存储过程了。

call proc_film_store(1,1,@a);---输入参数
--执行完之后会输出查询出来的数据

--输出查询到的条数
select @a;

?存储过程就OK了。

--还有一点要说明的是,书写存储过程时,一般会用到如下命令
--书写存储过程之前,改变结束符
delimiter $$  --这个语句的意思是将结尾符;替换为$$
--写完存储过程之后,再将结束符改回来
delimiter ;

?

?