【发布时间】:2021-12-27 16:15:31
【问题描述】:
我想删除 MySQL 特定数据库中的所有过程和函数。我正在尝试使用这个存储过程来实现这一点。
但我收到一个错误:
错误代码:1295 准备好的语句协议尚不支持此命令。
提前致谢。
delimiter $$
CREATE PROCEDURE sp_drop_all_stored_procedures()
begin
declare flag boolean default false;
declare sql_drop_statement varchar(1000);
declare statements cursor for SELECT
CONCAT('DROP ',ROUTINE_TYPE, ' ', ROUTINE_NAME, ';') as stmt
FROM information_schema.ROUTINES where ROUTINE_SCHEMA = 'DB_NAME' and
ROUTINE_NAME != sp_drop_all_stored_procedures;
declare continue handler for not found set flag := true;
open statements;
statements_loop: loop
fetch statements into sql_drop_statement;
if flag then
leave statements_loop;
end if;
set @drop_statement = sql_drop_statement;
select @drop_statement;
PREPARE stmt FROM @drop_statement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
end loop statements_loop;
close statements;
end $$
delimiter ;
【问题讨论】:
-
MySQL 不支持在函数过程或触发器中删除和创建函数和过程或触发器。
-
感谢您提供的信息。 ??????
标签: mysql mysql-workbench