MySQL:创建存储过程并立即调用

时间:2019-01-10 00:17:19

标签: mysql phpmyadmin

我需要创建一个存储过程,然后立即在同一.sql文件中立即调用它。该程序非常简单,只需计算收入与支出之间的差额即可。 问题是,当我调用过程I get this error message

过程如下:

DELIMITER $$            
    CREATE PROCEDURE crs.CurrentFinanceReport()
    BEGIN   
        DECLARE  income DECIMAL(6,2) default 0; 
        DECLARE  outgoings DECIMAL(6,2) default 0; 
        SET income = (SELECT SUM(invoice.TotalPrice) FROM crs.invoice INNER JOIN crs.orders ON orders.CustomerEmail = invoice.CustomerEmail WHERE orders.OrderStatus != "Recieved");
        SET outgoings =(SELECT SUM(OrderCost) FROM crs.stockOrder WHERE DateTimeRecieved = 0);
        SELECT (income - outgoings);
    END $$
    DELIMITER ;

我这样称呼它:

CALL crs.CurrentFinanceReport();

如果有帮助,我发现如果该过程为空(BEGIN和END之间没有任何内容),则可以无错误地调用它,但是即使我添加一个简单的SELECT *,它也会导致错误。 / p>

1 个答案:

答案 0 :(得分:0)

SET FORIEGN_KEY_CHECKS=ON是由phpmyadmin而非您的代码生成的查询。使用mysql客户端,您可能不会遇到此错误(或由于phpmyadmin“ cleverness”而导致的其他错误)。