I have a procedure defined like this:
drop procedure if exists drop_tables_like;
delimiter $$
create procedure drop_tables_like(myint int, pattern varchar(255), db varchar(255) )
begin
DECLARE CONTINUE HANDLER FOR 1064
select now() - interval myint day into @owa;
set group_concat_max_len = 65535;
select concat('drop table ', group_concat(table_name)) into @str_sql
from information_schema.tables
where
table_schema=db and table_name like pattern and
create_time <= @owa;
prepare stmt from @str_sql;
execute stmt;
drop prepare stmt;
end$$
The idea is to drop tables matching a certain pattern that have a create_time <= a specified date.
When executed, I get an error:
mysql> call drop_tables_like(7, 'monkey%', 'daweb2012_civicrm');
ERROR 1243 (HY000): Unknown prepared statement handler (stmt) given to EXECUTE
mysql>
How can I declare a handler for an exception in a procedure that is using a prepared statement?