USE `test_csv`; --test_csv is the table name
DROP procedure IF EXISTS `new_procedure`;
DELIMITER $$ --change delimiter
USE `test_csv`$$
CREATE DEFINER=`test_code`@`%` PROCEDURE `new_procedure`(OUT count INT)
BEGIN
select count(*) into count from minutes_data;
END$$
DELIMITER ; --change back delimiter
调用存储过程:
传参数说明:
如果想获得存储过程中OUT或者INOUT参数的值,在调用的时候需要传入用户变量,然后在存储过程执行之后检查变量的值。
call new_procedure(@count); --此处传变量count,获取存储过程的输出值
select @count; -- get the value of the count, where count is the result of the procedure.
存储过程调用时,存储过程中的IN参数可以直接传值,INOUT可以通过变量赋值传入,如果需要获取INOUT或者OUT的值,需要传变量,使用@variable_name的方式传变量。
INOUT使用示例:
USE `test_csv`;
DROP procedure IF EXISTS `new_procedure`;
DELIMITER $$
USE `test_csv`$$
CREATE DEFINER=`test_code`@`%` PROCEDURE `new_procedure`(INOUT count INT)
BEGIN
select count(*) into count from minutes_data;
END$$
DELIMITER ;
调用:
call new_procedure(@count); --此处传变量count,获取存储过程的输出值
select @count; -- get the value of the count, where count is the result of the procedure.
or:
set @count=1; --设置inout参数初始值
call new_procedure(@count); --获取存储过程改变后的inout参数的输出值
select @count; -- get the value of the count, where count is the result of the procedure.
IN和OUT配合使用:
USE `test_csv`;
DROP procedure IF EXISTS `new_procedure`;
DELIMITER $$
USE `test_csv`$$
CREATE DEFINER=`test_code`@`%` PROCEDURE `new_procedure`(IN limit_low int, OUT count INT)
BEGIN
SELECT count(*) INTO count FROM minutes_data WHERE ua > limit_low;
END$$
DELIMITER ;
调用:
call new_procedure(1, @test); --IN 参数直接传值1, out传变量@testselect @test; --获取存储过程输出结果