#1305 - FUNCTION不存在 - 嵌套循环

时间:2014-03-19 00:39:08

标签: mysql for-loop syntax-error nested-loops

所以,我收到一个关于未定义函数的错误。每当我尝试使用我的计数器变量来引用表中的特定条目时,就会发生这种情况。我不明白。

为了更清楚,我被告知为了使用mysql循环,我必须制作一个我已经完成的“程序”。 count和ingredientcount变量是对表tDrinks和tUniqueingredients中正在检查的行的引用。

我正在尝试从表tDrinkMix中的tDrinks生成drink id的外键引用。我想要在饮料中为每种独特成分的实例输入饮料ID。有16.5k饮料和2.2k独特的成分。

现在它死于SELECT id(count)FROM tDrinks。如果我删除了(计数)那么它就会在WHERE d_shopping(count)上死掉。

抛出的错误是#1305,它表示没有定义函数DrinksDB.id

DROP PROCEDURE `test`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
 DECLARE count INT DEFAULT 0;
 DECLARE ingredientcount INT DEFAULT 0;
 WHILE count < 16532 DO
    WHILE ingredientcount < 2202 DO
      INSERT INTO tDrinkMix(count)
                 SELECT id(count) FROM tDrinks
                 WHERE d_shopping(count)
                  LIKE CONCAT('%',tUniqueingredients.ingredient(ingredientcount),'%');
      SET ingredientcount = ingredientcount + 1;
    END WHILE;
   SET count = count + 1;
 END WHILE;
END

所以我正在努力改进这一点,我仍然不在那里。你怎么能说这是我的第一个数据库项目?我认为以下情况越来越近了:程序至少会保存并看起来可能会执行

delimiter //

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
 DECLARE count INT DEFAULT 0;
 DECLARE ingredientcount INT DEFAULT 0;
 WHILE count < 16532 DO
    WHILE ingredientcount < 2202 DO
      INSERT INTO tDrinkMix(drink_id)

                SELECT id
                FROM tDrinks
                WHERE id = count

                and

                d_shopping

                LIKE 
                (SELECT CONCAT (ingredient,'%') FROM tUniqueingredients WHERE id = ingredientcount);

      SET ingredientcount = ingredientcount + 1;
    END WHILE;
   SET count = count + 1;
 END WHILE;
END//

1 个答案:

答案 0 :(得分:0)

我相信错误正在发生,因为解析器将id(count)解释为函数。它正在你的数据库中寻找一个函数,我猜是DrinksDB。当您从id中删除(count)时,它会移动到d_shopping(count)的下一个语法错误,并在数据库中查找名为d_shopping的函数。 我很感激我迟到了(我只是在扫描未解决的问题)所以它可能不再是一个问题了。如果发表评论仍然存在问题。

相关问题