MySQL хранимая процедура с несколькими необязательными параметрами - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь создать хранимую процедуру с несколькими дополнительными параметрами, я пытался с помощью оператора IF, но не могу заставить его работать, и это последний код, который я пробовал.

Я хочуФильтр по «Усуарио», если он не равен нулю, я привожу «Усуарио» в качестве примера, но у него будут другие фильтры, подобные этому.

CREATE DEFINER=`conciliacion`@`%` PROCEDURE `BuscarRRNormal`(IN `FechaDesde` DATE, IN `FechaHasta` DATE, IN `Usuario` varchar(255))
BEGIN

SELECT IDS, Fecha_Recarga, Usuario, Monto, Operador
FROM transaccionesrr
WHERE (Fecha_Recarga BETWEEN FechaDesde AND FechaHasta) 
AND (@Usuario IS NULL OR Usuario = @Usuario);

END

Кажется, что MySQL не поддерживает необязательные параметры, номожет быть подобный вариант?Любая помощь будет оценена.

1 Ответ

0 голосов
/ 13 мая 2018

В MySQL переменная @Usario не является тем же объектом, что и параметр IN процедуры Usario.Это разные переменные.Вы не можете ссылаться на @Usario, чтобы получить значение параметра IN Usario.

Вы должны назвать свой параметр чем-то отличным от имени столбца, с которым вы хотите сравнить его, а затем просто использовать его в запросе без@ символ.Например, можно использовать соглашение об именах для добавления префикса к имени параметра с «p».

CREATE DEFINER=`conciliacion`@`%` PROCEDURE `BuscarRRNormal`(IN `pFechaDesde` DATE, IN `pFechaHasta` DATE, IN `pUsuario` varchar(255))
BEGIN

SELECT IDS, Fecha_Recarga, Usuario, Monto, Operador
FROM transaccionesrr
WHERE (Fecha_Recarga BETWEEN pFechaDesde AND pFechaHasta) 
AND (pUsuario IS NULL OR Usuario = pUsuario);

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