mysql - MySQL:创建存储过程并立即调用它
问题描述
我需要创建一个存储过程,然后立即在同一个 .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 * 它就会导致错误。
解决方案
SET FORIEGN_KEY_CHECKS=ON
是 phpmyadmin 生成的查询,而不是您的代码。使用 mysql 客户端,您可能不会遇到此错误(或由于 phpmyadmin “聪明”而导致的任何其他错误)。
推荐阅读
- reactjs - 无法识别地图函数中的React js onClick函数
- javascript - 如何更新嵌套在 React 状态中的对象
- bash - 在 echo 语句中删除了转义字符
- html - 垂直对齐弹性盒
- javascript - 循环数据并使用数据创建 html 元素
- node.js - 无法在 aws elastic beanstalk 上 npm install bcrypt 3.0.6?
- javascript - 2019浏览器不存在Canvas、WebGL调试功能?
- reporting-services - SSRS - 使用参数的输入从开始/结束日期减去 X 天数
- javascript - 内容处置:内联与附件用例?
- python - python 3 的新手并且在访问字典值时遇到问题