--更改命令结束符(因为在procedure中经常要用到默认的命令结束符--分号(;)
--所以在创建procedure的时候需要定义新的结束符以说明创建procedure的命令结束)
--这里将结束符号改成美元符号--$
mysql> delimiter $
--创建MySQL存储过程p3
--此存储过程的过程名是p3,该过程包含两个参数,
--一个是输入类型的(以IN标示),参数名是nameid,类型是int,
--一个是输出类型的(以OUT标示),参数名是person_name,类型是varchar(10)
--此存储过程的作用是查询出zzm表的全部内容,会输出结果集(data set),然后
--再查询表中记录的ID是nameid的字段name,将其输出到第二个输出类型的参数里面,这个查询
--不会输出结果集。
-
create procedure p3(IN nameid int, OUT person_name varchar(10))
-
begin
-
select * from test.zzm;
-
select zzm.name into person_name from test.zzm where zzm.id = nameid;
-
end$
调用mysql存储过程
call p3()$
例:创建存储过程并调用:
delimiter $
create procedure p12(n int)
begin
declare i int;
set i = 0;
while i < n do
set i = i + 1;
insert into test(name,age,gender) values( '小红',27,2);
end while;
select count(*) from test;
end$
call p12(10000)$
测试机器时经常要测试 inset 和 alert 的绝对值,所以写了个存储过程来完成.
-
DROP PROCEDURE IF EXISTS proc_buildata;
-
tudou@Gyyx
-
CREATE PROCEDURE proc_buildata(IN loop_times INT)
-
BEGIN
-
DECLARE var INT DEFAULT 0;
-
-
PREPARE MSQL FROM 'CREATE TABLE IF NOT EXISTS `employee` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`employeeid` int(10) unsigned NOT NULL COMMENT ''0'',`employeename` varchar(64) NOT NULL DEFAULT '''',PRIMARY KEY (`id`)) ENGINE=InnoDB';
-
EXECUTE MSQL;
-
-
WHILE var<loop_times DO
-
SET var=var+1;
-
INSERT INTO employee (employeeid,employeename) VALUES (var,CONCAT('test',var));
-
-
END WHILE;
-
END
-
-
CALL proc_buildata(2000000);
-
-
-
SELECT COUNT(1) FROM employee
参考:
http://blog.csdn.net/ylqmf/article/details/7291338
阅读(849) | 评论(0) | 转发(0) |