Mysql 使用IF逻辑调用存储过程中的存储过程

Mysql 使用IF逻辑调用存储过程中的存储过程,mysql,sql,Mysql,Sql,无法基于存储过程中的IF逻辑调用存储过程。我需要返回2个存储过程中的1个的结果,具体取决于月份的日期 该逻辑的格式不正确,我不知道如何正确格式化以获得所需的结果 调用的两个过程都只是SELECT查询 DELIMITER // CREATE PROCEDURE report_novea_remittance() BEGIN SELECT IF( DAYOFMONTH(CURDATE()) < 15, CALL report_novea_1st_15th(),

无法基于存储过程中的
IF
逻辑调用存储过程。我需要返回2个存储过程中的1个的结果,具体取决于月份的日期

该逻辑的格式不正确,我不知道如何正确格式化以获得所需的结果

调用的两个过程都只是
SELECT
查询

DELIMITER //
CREATE PROCEDURE report_novea_remittance()
BEGIN

SELECT IF( DAYOFMONTH(CURDATE()) < 15,
           CALL report_novea_1st_15th(),
           CALL report_novea_16st_EOM());
       END 
DELIMITER ;
分隔符//
创建程序报告\u novea\u汇款()
开始
选择(DAYOFMONTH(CURDATE())<15,
调用报告\u novea\u 1st\u 15th(),
调用report_novea_16st_EOM());
结束
定界符;

DELIMITER //
CREATE PROCEDURE report_novea_remittance()
BEGIN

SELECT IF( DAYOFMONTH(CURDATE()) < 15,
           CALL report_novea_1st_15th(),
           CALL report_novea_16st_EOM());
       END 
DELIMITER ;
如果月日大于第15次呼叫报告(新第1次呼叫报告第15次呼叫报告)

如果错误,则呼叫报告\u novea\u 16st\u EOM()


这不是在存储过程中编写
IF
语句的方式。正确的格式是:

IF DAYOFMONTH(CURDATE()) < 15 THEN
    CALL report_novea_1st_15th();
ELSE
    CALL report_novea_16st_EOM();
END IF;
如果DAYOFMONTH(CURDATE())<15,则
请致电“报告第一次(第15次)”;
其他的
调用report_novea_16st_EOM();
如果结束;

请参阅。

为什么要使用
选择
?已工作。谢谢你,尼克。@Jake别担心。如果这确实解决了你的问题,请考虑通过回答所接受的答案来关闭问题(在上/下投票箭头下的复选标记)。看见