2011-01-05 8 views
0
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を受け取ります。サブクエリが1行以上を返します/指数移動平均

何か助けに感謝します。

答えて

0

私はraw dataは、よりその1行があり、エラーが発生しやすい場所であると思われる、あなたの問題は

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

であると思います。

条件(WHERE句)を指定するか、LIMITステートメントを使用する必要があります。

0

あなたは

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

の端にLIMIT 1を入れた場合、それはエラーなしで動作しますか?

+0

制限が1の場合、エラーは発生しません。 1より大きい制限を調整すると、次のようになります。サブクエリは1行以上を返します – Chad

関連する問題