mysql - 具有多个可选参数的 MySQL 存储过程
问题描述
我正在尝试创建一个具有多个可选参数的存储过程,我尝试过使用 IF 语句,但我无法使其工作,这是我尝试过的最后一个代码。
如果“Usuario”不为空,我想按“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 不支持可选参数,但可能有类似的选项?任何帮助将不胜感激。
解决方案
在 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
推荐阅读
- excel - 需要有关将 CSV 文件导出到自定义地图的帮助
- laravel - 如何在 laravel php 中从数据库中获取印地语文本,
- python - 如何从数据框中的字典列表中存储特定的键值
- postgresql - 尝试将我的 Elixir 应用程序连接到 VPN 上的 Postgres 银行时出现问题
- python - 图像与自身的二维相关函数给出错误值
- tensorflow - 相对于可训练变量子集的张量流梯度
- android - Ubuntu+CMake,无法静态构建 C/C++ android-ndk 程序
- django - 带有 DRF 的 cookie 的 Nuxt 身份验证
- stm32 - 使用通用定时器延迟 - 比预期的要快
- javascript - 将数组的单个元素传递给点击函数?