2014-02-08 58 views
0

這是我手術的身體已成功創建mysql的1242錯誤執行存儲過程時

CREATE PROCEDURE test.calculoSistema() 
    BEGIN 
    DECLARE FNacimiento TIMESTAMP DEFAULT CURRENT_TIMESTAMP; 
    SET FNacimiento = (select DATE_ADD(FROM_UNIXTIME(0), INTERVAL fnacimiento SECOND)  from participants); 
    select FNacimiento from participants; 
    END; 

運行此程序失敗(MySQL的HA dicho:#1242 - 子查詢返回多個1行),該解決方案對此將使用該過程中的任何查詢,但mysql會返回錯誤#1064,從那時起我一直在與我的工作站在一起。

CREATE PROCEDURE test.calculoSistema() 
    BEGIN 
    DECLARE FNacimiento TIMESTAMP DEFAULT CURRENT_TIMESTAMP; 
    SET FNacimiento = ANY (select DATE_ADD(FROM_UNIXTIME(0), INTERVAL fnacimiento SECOND)  from participants); 
    select FNacimiento from participants; 
    END; 

我想要做的是將日期傳遞給一個變量的時間戳到一個變量,因爲查詢是非常大的。

您的意見和迴應將會非常有幫助。

回答

0

我不明白存儲過程的邏輯,但下面應該消除ERROR 1064。我不確定ANY是否解決了子查詢的問題:

DELIMITER // 

CREATE PROCEDURE `test`.`calculoSistema`() 
BEGIN 
    DECLARE `FNacimiento` TIMESTAMP DEFAULT CURRENT_TIMESTAMP; 
    SET `FNacimiento` = ANY (SELECT DATE_ADD(FROM_UNIXTIME(0), INTERVAL `fnacimiento` SECOND) FROM `participants`); 
    SELECT `FNacimiento` FROM `participants`; 
END// 

DELIMITER ;