mysql - 从存储过程调用 DROP USER,如何扩展输入参数

标签 mysql stored-procedures mysql-error-1064

我正在尝试设置一个(部分)删除用户的存储过程。我已经尝试了几个“扩展”论点的 DROP USER 版本,但我找不到一个有效的版本。有人可以帮忙吗?

DELIMITER //
CREATE PROCEDURE `dropuser`( IN inUser varchar(255) )
BEGIN
  #DROP USER concat(inUser,"@localhost");
  #DROP USER inUser "@localhost";
  #DROP USER "inUser@localhost";
END//
DELIMITER ;

CALL dropuser("asdf");

他们三个都以同样的方式失败:

ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(inUser,"@localhost");

显然我的扩展有误。

最佳答案

delimiter //
drop procedure if exists dropuser //
create procedure dropuser( in inUser varchar(255) )
begin
  set @str = concat('drop user ', "'",inUser,"'@","'localhost'");
  prepare stmt from @str;
  -- select @str;  
  execute stmt;
  deallocate prepare stmt;
end//
delimiter ;

call dropuser('pippo');

关于mysql - 从存储过程调用 DROP USER,如何扩展输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985593/

相关文章:

PHP 更新现有 MySQL 行或插入新行(对 UPDATE ON DUPLICATE KEY 感到困惑)

mysql - 称为并行的存储过程按顺序返回结果

java - java 调用中的过程调用不起作用

sql - 需要有关存储过程的帮助

c# - 调用 MySQL 过程给出异常 "procedure cannot be found"

mysql - 如何将 mysql 数据库/表数据转换为 cassandra 数据文件...?

java - sqlMapClient.startTransaction() - 案例

php - mysql - UNION 项目的参数未包含在先前选择的项目中

python - 执行命令时出现pymysql.err.ProgrammingError 1064

php - sql查询执行出现问题