案例:插入数据
DROP PROCEDURE if EXISTS test_sys;
CREATE PROCEDURE test_sys(a INT)
BEGIN
DECLARE a INT;
SET a = 1;
WHILE a < 5929 DO
INSERT INTO zcchfx_categories_rules(rule_id,category_id) VALUES(a,10001);
SET a= a + 1;
COMMIT;
END WHILE;
END;
CALL test_sys(1);
1、删除存储过程(提示PROCEDURE test_sys already exists已存在,则需删除):
DROP PROCEDURE if EXISTS test_sys;
2、创建存储过程(插入1~19数据):
CREATE PROCEDURE test_sys(a INT)
BEGIN
DECLARE a INT;
SET a = 1;
WHILE a < 20 DO
INSERT INTO sp(PORT) VALUES(a);
SET a= a + 1;
COMMIT;
END WHILE;
END;
3、MYSQL调用存储过程:
语法:
CALL 存储过程名(參数列表)
// CALL语句能够用声明为OUT或的INOUT參数的參数给它的调用者传回值。
// 存储过程名称后面必须加括号,哪怕该存储过程没有參数传递
例:
CALL test_sys(100);
4、列出全部的存储过程:
SHOW PROCEDURE STATUS
5、MySQL存储过程參数类型(in、out、inout)
MySQL存储过程參数(in)
MySQL存储过程 “in”參数:跟 C语言的函数參数的值传递类似, MySQL存储过程内部可能会改动此參数,但对 in类型參数的改动,对调用者(caller)来说是不可见的(not visible)。 |
MySQL存储过程參数(out)
MySQL存储过程 “out”參数:从存储过程内部传值给调用者。在存储过程内部,该參数初始值为 null,不管调用者是否给存储过程參数设置值 |
MySQL存储过程參数(inout)
MySQL存储过程 inout參数跟 out类似,都能够从存储过程内部传值给调用者。不同的是:调用者还能够通过 inout參数传递值给存储过程。 |
总结
假设只想把数据传给 MySQL存储过程,那就使用“in”类型參数; 假设只从 MySQL存储过程返回值,那就使用“out”类型參数; 假设须要把数据传给 MySQL存储过程,还要经过一些计算后再传回给我们,此时,要使用“inout”类型參数。 |