Mysql 1242执行存储过程时出错

时间:2014-02-08 19:06:01

标签: mysql stored-procedures

这是我的程序成功创建的正文

    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 - Subquery返回超过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;

我想要做的是将日期传递给时间戳unix为变量,因为查询非常大。

您的意见和回复将非常有用。

1 个答案:

答案 0 :(得分: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 ;