这是我的程序成功创建的正文
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为变量,因为查询非常大。
您的意见和回复将非常有用。
答案 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 ;