我得到通过发送下面的查询(MYSQL 5.0)的错误:MySQL的程序语法错误
DELIMITER //
CREATE PROCEDURE relationTable()
BEGIN
DECLARE articlecount int;
DECLARE keywordcount int;
DECLARE articlehits int;
DECLARE ac int DEFAULT 0;
DECLARE kc int;
DECLARE articleid int;
DECLARE word varchar(100);
DECLARE word_id int;
SET articlehits = 0;
SET articlecount = (SELECT count(id) from articles);
SET keywordcount = (SELECT count(id) from keywords);
outerloop: WHILE (ac < articlecount) DO
SET kc = 0;
SET articleid = (SELECT id from articles LIMIT 1 OFFSET ac);
innerloop: WHILE (kc < keywordcount) DO
IF (articlehits < 5) THEN
SELECT keyword, id INTO word, word_id from keywords LIMIT 1 OFFSET kc;
IF (0 < (SELECT COUNT(id) from articles WHERE id=articleid AND CONCAT(title, " ",text) REGEXP word)) THEN
INSERT INTO articles (id, articleID, keywordID, type) VALUES(NULL, articleid, word_id, 'type1');
SET articlehits = articlehits + 1;
END IF;
SET kc = kc + 1;
ELSE
SET kc = keywordcount;
END IF;
END WHILE innerloop;
SET ac = ac + 1;
END WHILE outerloop;
END;
//
DELIMITER ;
这将产生以下错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1 OFFSET ac); innerloop: WHILE (kc < keywordcount) DO TO word, word_id from' at line 15
任何想法,为什么出现这种情况?
(写到这来创建文章和关键字之间的关系表,以便在文章视图智能链接。)
1.错误报告中的单词DO和单词片段TO是你问题的一部分的奇怪跳过? – 2012-02-11 14:55:40
2.是否可能需要SELECT INTO用户定义的变量而不是声明的过程变量? – 2012-02-11 14:58:25
你是什么意思的“用户定义”变量? – enigma 2012-02-11 15:43:21