create PROCEDURE test_procedure(in in1 INT , in in2 INT, out out1 INT,out out2 VARCHAR(255))
READS SQL DATA
BEGIN
DECLARE v_return_rows INT; -- 定义变量(int类型)
DECLARE v_id INT;
DECLARE v_title VARCHAR(255);
DECLARE cur_bs_demo CURSOR for SELECT id,demo_title FROM bs_demo;
-- DECLARE not_found_table_condition CONDITION for 1146; -- 定义条件(也可称定义变量(条件类型))【条件处理2】
-- DECLARE EXIT HANDLER for 1146 SET out1 = -1; -- 定义条件的处理(使用预定义条件)【条件处理1】
-- DECLARE EXIT HANDLER for not_found_table_condition SET out1 = -2; -- 定义条件的处理(使用自定义条件变量)【条件处理2】
DECLARE EXIT HANDLER for NOT FOUND CLOSE cur_bs_demo;
select * from bs_demo;
select FOUND_ROWS() into v_return_rows; -- 赋值给变量
set out1 = v_return_rows; -- 将变量赋值给返回值
-- select * from bs_demo_error; -- 执行错误的sql语句 报1146错误【条件处理 1 2】
OPEN cur_bs_demo;
REPEAT
FETCH cur_bs_demo into v_id,v_title;
IF v_id = 832 THEN
SET out2 = v_title;
END IF;
UNTIL 0 END REPEAT;
CLOSE cur_bs_demo;
END
-- 创建过程
call test_procedure(1,1,@testJ,@testJO2); -- 调用过程
select @testJ,@testJO2 ; -- 显示输出值
show PROCEDURE STATUS like 'test_procedure'; -- 查看过程的状态信息
show create PROCEDURE test_procedure ; -- 查看过程的定义
drop PROCEDURE if EXISTS test_procedure; -- 删除过程