drop procedure test;

delimiter ;;
CREATE procedure test()
-- 取动态sql的值
-- 目前只测试出,在 where 后面, 可以用 ?,类似于 java的 preparestatement写法,
-- 表名,查询字段 是否可以也用? 代替,目前没有测试成功
begin
DECLARE v_sqlcounts varchar(500);
DECLARE recordcount varchar(500); set v_sqlcounts = concat('select * from test where id > ?');
set @sqlcounts := v_sqlcounts;
#预处理动态SQL
set @b=3;
prepare stmt from @sqlcounts;
#传递动态SQL内参数
execute stmt using @b;
deallocate prepare stmt;
#获取动态SQL语句返回值
SELECT @b;
end
;;
delimiter ; call test();
05-11 19:57