时间:2021-07-01 10:21:17 帮助过:49人阅读
求高手指点 语法哪里有问题啊
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE x_similarity
.CovarianceEngine
()
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
/* 定义变量一 /
DECLARE done, done2 INT DEFAULT 0;
DECLARE stockNo_a VARCHAR(6);
DECLARE coefficient DOUBLE(16,14);
/ 定义光标 */
DECLARE _Cur CURSOR FOR
SELECT DISTINCT stock_no FROM history_day;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;#错误定义,标记循环结束 /* 打开光标 */ OPEN _Cur; /* 循环执行 */ REPEAT FETCH _Cur INTO stockNo_a; IF NOT done THEN BEGIN /* 定义变量一 */ DECLARE stockNo_b VARCHAR(6); /* 定义光标 */ DECLARE _CurInner CURSOR FOR SELECT DISTINCT stock_no FROM history_day; OPEN _CurInner; REPEAT FETCH _CurInner INTO stockNo_b; IF NOT done2 THEN SELECT ( AVG(a. CLOSE * b. CLOSE) - AVG(a. CLOSE) * AVG(b. CLOSE) ) / SQRT( ( AVG(a. CLOSE * a. CLOSE) - AVG(a. CLOSE) * AVG(a. CLOSE) ) * ( AVG(b. CLOSE * b. CLOSE) - AVG(b. CLOSE) * AVG(b. CLOSE) ) ) INTO coefficient FROM history_day a, history_day b WHERE a.date = b.date AND a.date >= '2015-08-05' AND a.date <= '2015-08-11' AND a.stock_no = stockNo_a AND b.stock_no = stockNo_b; IF coefficient > 0.5 OR coefficient < -0.5 THEN INSERT INTO correlationanalysis (stock_no_f, stock_no_r, coefficient) VALUES(stockNo_a, stockNo_b, coefficient); COMMIT; END IF; END IF; UNTIL done2 END REPEAT; CLOSE _CurInner; SET done2 = 0; END END IF; UNTIL done END REPEAT;CLOSE _Cur;END$$
DELIMITER ;
错误代码: 1064
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 'END IF;
UNTIL done END REPEAT;
CLOSE _Cur;
END' at line 65