MySQL: создайте хранимую процедуру и немедленно вызовите ее - PullRequest
0 голосов
/ 10 января 2019

Мне нужно создать хранимую процедуру, а затем немедленно вызвать ее, все в одном и том же файле .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 Ответ

0 голосов
/ 10 января 2019

SET FORIEGN_KEY_CHECKS=ON - это запрос, сгенерированный phpmyadmin, а не ваш код. Используйте клиент mysql, и вы, вероятно, не столкнетесь с этой ошибкой (или любой другой из-за phpmyadmin «ум»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...