我正在尝试制作一个具有多个optionals参数的存储过程,我尝试了if语句,但无法使其工作,这是我最后尝试的代码。
我想通过“usuario”过滤,如果它不是空的,我以“usuario”为例,但它会有其他类似的过滤器。
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条答案
按热度按时间hfwmuf9z1#
在mysql中,变量
@Usario
与参数中的过程不是同一个对象Usario
. 它们是不同的变量。不能引用@Usario
获取in参数的值Usario
.您应该将参数命名为与要比较的列名不同的名称,然后只在查询中使用它而不使用
@
性格。例如,可以使用命名约定在参数名前面加上“p”。