Я пытаюсь создать хранимую процедуру для переименования пользователей в моей базе данных MySQL:
CREATE DEFINER=`admin`@`%` PROCEDURE `renamedbuser`(
IN _oldname VARCHAR(200),
IN _newname VARCHAR(200)
)
BEGIN
IF (SELECT COUNT(User) FROM mysql.user WHERE User = _oldname) > 0 THEN
BEGIN
RENAME USER _oldname TO _newname;
END;
END IF;
END
Когда я запускаю эту процедуру, я получаю следующую ошибку:
MySql.Data.MySqlClient.MySqlException (0x80004005): Operation RENAME USER failed for '_oldname'@'%'
Мне кажется, что при выполнении строки RENAME USER в качестве исходного имени пользователя используется name переменной _oldname, а не значение , которое содержит переменная.
Если я выполню что-то вроде
RENAME USER 'test' TO 'testing';
Если работает так, как я ожидал, переименуйте пользователя 'test' @ '%'.
Я неправильно называю RENAME USER? Разве этот оператор просто не работает таким образом, когда вызывается из хранимой процедуры? Есть ли способ добиться поведения, которое я ищу?