我需要创建一个存储过程,然后立即调用它,都在同一个.sql文件中。这个过程很简单,只是计算收入和支出之间的差额。问题是,当我调用这个过程时,我得到了这个错误消息
程序如下:
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*它就会导致错误。
1条答案
按热度按时间fxnxkyjh1#
SET FORIEGN_KEY_CHECKS=ON
是由phpmyadmin生成的查询,而不是您的代码。使用mysql客户机,您可能不会遇到此错误(或者由于phpmyadmin的“聪明”而导致的任何其他错误)。