MySQL Хранимая процедура с двумя входными значениями даты и времени, не возвращающими результаты - PullRequest
0 голосов
/ 06 февраля 2020

Итак, я работаю над примером проблемы использования двух входных значений диапазона дат для хранимой процедуры в MySQL. Я могу успешно создать процедуру, и объединение может извлечь данные без ошибки, но когда я на самом деле пытаюсь использовать хранимую процедуру и вводить дату начала и дату окончания, я не получаю данных. Любая идея, почему?

DELIMITER $$
USE northwind$$
CREATE PROCEDURE order_details_date(in begin_date DATETIME, in end_date DATETIME)
BEGIN 
SELECT 
    e.EmployeeID,
    e.FirstName,
    e.LastName,
    e.Region,
    o.OrderID,
    o.OrderDate,
    o.ShipRegion
FROM
    employees e
JOIN
    orders o ON e.EmployeeID = o.EmployeeID
WHERE o.OrderDate >= @begin_date AND
    o.OrderDate <= @end_date
ORDER BY o.OrderDate;
END$$
DELIMITER ;

Чтобы было ясно, я не получаю сообщение об ошибке, я просто получаю результат запроса без данных. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 06 февраля 2020

Когда вы используете @ перед именем переменной, вы ссылаетесь на пользовательскую переменную сеанса, не на вход вашей процедуры. Вам необходимо удалить символы @ перед этими именами, т.е.

SELECT 
    e.EmployeeID,
    e.FirstName,
    e.LastName,
    e.Region,
    o.OrderID,
    o.OrderDate,
    o.ShipRegion
FROM
    employees e
JOIN
    orders o ON e.EmployeeID = o.EmployeeID
WHERE o.OrderDate >= begin_date AND
    o.OrderDate <= end_date
ORDER BY o.OrderDate;

Обратите внимание, что вы можете использовать BETWEEN в качестве сокращения, например

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