具有可选“ WHERE”参数的存储过程?mysql-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

具有可选“ WHERE”参数的存储过程?mysql

保持可爱mmm 2020-05-17 21:17:55 101

我有一个表单,用户可以指定各种参数来挖掘某些数据(状态,日期等)。

我可以产生一个查询:

SELECT * FROM table WHERE: status_id = 3 date = other_parameter = 等等。每一个WHERE都是可选的(我可以选择带有的status = 3所有行date = 10/10/1980,或者带有的所有行,或者带有status = 3 AND date = 10/10/1980etc的所有行)。

给定大量参数(全部为可选参数),组成动态存储过程的最佳方法是什么?

我正在处理各种数据库,例如:MySQL,Oracle和SQLServer。

mysql存储过 mysql参数 存储过参数 参数where mysql存储过参数
分享到
取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-05-17 21:20:41

    实现此目的的最简单方法之一:

    SELECT * FROM table WHERE ((@status_id is null) or (status_id = @status_id)) and ((@date is null) or ([date] = @date)) and ((@other_parameter is null) or (other_parameter = @other_parameter)) 等等。这完全消除了动态sql,并允许您搜索一个或多个字段。通过消除动态sql,您消除了有关sql注入的另一个安全问题。来源:stack overflow

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

相似问题
最新问题
推荐课程