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和61年5月1日运行。我现在知道EXECUTE staement不能用于INSERT。所以问题就变成了:我怎样才能完成存储过程试图做的事情? – 2013-04-15 19:13:37