1
Я пытаюсь заполнить таблицу значениями из инструкции EXECUTE в хранимой процедуре. Есть ли способ выполнить это или что-то подобное.Выполнить инструкцию в предложении VALUES MYSQL
DELIMITER $$
DROP PROCEDURE IF EXISTS `mysql`.`ShowUserGrants` $$
CREATE PROCEDURE mysql.ShowUserGrants()
BEGIN
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE strGrant CHAR(100);
DECLARE cur1 CURSOR
FOR SELECT CONCAT("SHOW GRANTS FOR '",user,"'@'",host,"';")
FROM mysql.user
WHERE host!='localhost';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
OPEN cur1;
read_loop:LOOP
FETCH cur1 INTO strGrant;
IF done THEN
CLOSE Cur1;
LEAVE read_loop;
END IF;
SET @a = strGrant;
PREPARE strStmt FROM @a;
INSERT INTO user_grants (grants) VALUES(EXECUTE strStmt);
/* EXECUTE strStmt; */
DEALLOCATE PREPARE strStmt;
END LOOP;
END $$
DELIMITER ;
Операция EXECUTE работает так, как я хочу, но вам нужно заполнить таблицу user_grants. Спасибо.
эта процедура будет работать на MySQL 5.0.51 и 5.1.61. Теперь я знаю, что EXECUTE staement нельзя использовать с INSERT. Поэтому возникает вопрос: как я могу выполнить то, что пытается выполнить хранимая процедура? –