2013-04-22 29 views
1

我创建了一个while循环直到30,我想将x作为值存入查询。我不能运行这个,因为我不能使用x作为值。我怎样才能做到这一点 ? 我想使用x作为小时编号。 谢谢作为值的变量存入mysql存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `add_day`(IN `d_id` INT, IN `date` VARCHAR(64)) 
BEGIN 
     DECLARE x INT; 
     SET x = 1; 
     WHILE x <= 30 DO 

INSERT INTO `e-heal`.`scheduler` (`scheduler_id` ,`d_id` ,`hour_id` ,`date` ,`available`) 
VALUES (NULL , '5', x, '2013-04-22', '0'); 

        SET x = x + 1; 
     END WHILE; 
END 
+0

我希望能工作。如果没有,你是否尝试用'select ...'替换'values(...)'? – 2013-04-22 20:04:11

+0

你能举个例子吗? – MoonFox 2013-04-22 20:05:05

+0

发生了什么?为什么要删除代码? – MoonFox 2013-04-22 22:01:36

回答

0

它对我来说是原样。您可以尝试在前面加@x

DROP PROCEDURE `add_day`; 

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` 
     PROCEDURE `add_day`(IN `d_id` INT, IN `date` VARCHAR(64)) 
BEGIN 
     DECLARE x INT; 
     SET @x = 1; 
     WHILE @x <= 30 DO 
      INSERT INTO `e-heal`.`scheduler` 
       (`scheduler_id` ,`d_id` ,`hour_id` ,`date` ,`available`) 
       VALUES (NULL , '5', @x, '2013-04-22', '0'); 

      SET @x = @x + 1; 
     END WHILE; 
END $$ 

DELIMITER ; 

但我想知道你正在尝试用两个参数,你从来不用做的,以及具有相同名称的两个列。

+0

@Marjecta,如果他使用@x他不应该声明x。 x和@x是不同的变量 – 2013-04-25 09:45:05