Подзапрос возвращает более 1 строки / экспоненциальное скользящее среднее - PullRequest
0 голосов
/ 05 января 2011
CREATE DEFINER = `ninja_dba`@`` PROCEDURE `adb`.`MACD12`( x int)
LANGUAGE SQL
DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN

MACD_12:BEGIN
DECLARE z FLOAT;  
DECLARE y FLOAT default 56.41;
DECLARE w float;

WHILE x < 10 do
INSERT  into `MACD`(
x,y,z,X12) select z,y,x,w;

SET  z= IFNULL ( (y + ((2/13) * (w - y))),Y) ;
SET y=z;
SET x =x+1;
SET w = (select close from`raw data`);

end while;

end MACD_12;

END

call macd12 (1);

Я пытаюсь построить экспоненциальную скользящую среднюю. Частично проблема заключается в установке первой строки, поэтому я объявляю первую строку (56.41) в начале процедуры. Я считаю, что процедура будет работать, однако, когда я пытаюсь вызвать процедуру, я получаю печально известную ошибку «Подзапрос возвращает более 1 строки» ошибка 1242.

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 05 января 2011

Если вы поместите LIMIT 1 в конце

SET w = (select close from`raw data`); 

Работает ли он без ошибок?

0 голосов
/ 05 января 2011

Я думаю, что ваша проблема связана с

SET w = (select close from`raw data`);

Может показаться, что raw data имеет более 1 строки, и именно здесь может произойти ошибка.либо указать критерий (WHERE предложение), либо использовать оператор LIMIT.

...