Вызов DROP USER из хранимого процесса, как расширить входной аргумент - PullRequest
1 голос
/ 02 ноября 2011

Я пытаюсь настроить сохраненный процесс, который (частично) удаляет пользователя. Я пробовал несколько версий 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");

Очевидно, я неправильно понимаю расширение.

1 Ответ

0 голосов
/ 02 ноября 2011
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');
...