我可以创建一个过程或函数来在 mysql 中删除参数 table 吗?

Can i create a procedure or fuction to drop a parameter table in mysql?

delimiter //
DROP PROCEDURE IF EXISTS drop_table//
create procedure drop_table(in table_name varchar) #创建带参数的存储过程
begin
        drop table if EXISTS table_name;
end//
delimiter ;

call drop_table('a')

我使用 Navicat 创建了一个过程来删除 mysql 中的参数 table。

错误:无效的存储过程语法

正如 P.Salmon 评论的那样,您不能直接在 sql 语句中传递替换过程参数(即变量)。您需要动态 sql:将查询构建为字符串,然后执行它。

delimiter //

create procedure drop_table(in p_table_name varchar(200))
begin
    set @q = concat('drop table if exists ', p_table_name);
    prepare stmt from @q;
    execute stmt;
    deallocate prepare stmt;
end//

delimiter ;

Demo on DB Fiddle

注意:varchar 数据类型需要一个长度。