Чего я хочу достичь
Я создаю Procedure
в моей базе данных MySQL, которая получит столбец «Сумма чистой суммы», помеченный как netamt
, где Дата покупки, помеченная как purdate
, находится между StartDate
и EndDate
. Я попробовал два отдельных способа с моим SQL-запросом. Когда я запускал запрос CREATE
, MySQL принимал его и создавал мой Procedure
. Но когда я пытаюсь вызвать Procedure
, возвращается NULL
.
Мой SQL-запрос
Вот как выглядит мой первый CREATE
код:
CREATE DEFINER=`*****`@`localhost` PROCEDURE `Payable_Total_Net`(
IN startDate DATE,
IN endDate DATE,
OUT totalNet DECIMAL(19,4)
)
BEGIN
SELECT
SUM(COALESCE(p.netamt,0)) INTO totalNet
FROM Payables p
WHERE p.purdate >= str_to_date(startDate, '%Y-%m-d%') AND p.purdate <= str_to_date(endDate, '%Y-%m-d%');
END
Вот как выглядит мой второй CREATE
код:
CREATE DEFINER=`*****`@`localhost` PROCEDURE `Payable_Total_Net`(
IN startDate DATE,
IN endDate DATE,
OUT totalNet DECIMAL(19,4)
)
BEGIN
SELECT
SUM(COALESCE(p.netamt,0)) INTO totalNet
FROM Payables p
WHERE p.purdate BETWEEN str_to_date(startDate, '%Y-%m-d%') AND str_to_date(endDate, '%Y-%m-d%');
END
Вот так выглядит обычный запрос с правильным результатом:
SELECT
SUM(COALESCE(p.netamt,0)) as totalNet
FROM Payables p
WHERE p.purdate BETWEEN '2018-01-01' AND '2018-12-31'
Вот как я называю Procedure
:
Call Payable_Total_Net('2018-01-01','2018-12-31',@totalNet);
SELECT @totalNet;
Моя текущая хранимая процедура

Мои запросы для вызова хранимой процедуры

Результат, если я выполню оба запроса одновременно

Результат, если я только выполню запрос Выбрать

Это мой ожидаемый результат с использованием обычного запроса
