是否可以在MySQL 5.x中的存储过程中传递整个WHERE条件?

是否可以在MySQL 5.x中的存储过程中传递整个WHERE条件?,sql,mysql,stored-procedures,Sql,Mysql,Stored Procedures,我只需要在条件允许的情况下通过,比如: CREATE DEFINER=`root`@`localhost` PROCEDURE `productpricing2`( IN cond CHAR(200) ) BEGIN SELECT * FROM tbl_products WHERE cond LIMIT 1; END 把它叫做: CALL productpricing2("productName IS NOT NULL"); 其中productName列在表tbl\U produ

我只需要在条件允许的情况下通过,比如:

CREATE DEFINER=`root`@`localhost` PROCEDURE `productpricing2`(
   IN cond CHAR(200)
)
BEGIN
   SELECT * FROM tbl_products WHERE cond LIMIT 1;
END
把它叫做:

CALL productpricing2("productName IS NOT NULL");
其中productName列在表tbl\U products中


谢谢

是的,您可以使用它,并将整个查询构建为一个字符串,但这不是一种优雅的处理方式

还请注意:

  • 在SQL注入的情况下,您的查询应该利用参数化的prepared语句
  • 即使参数化的预处理语句也不是完全“安全”的,您应该避免这种DB编程
是的,这是可能的(尽管正如HLGEM指出的,它为SQL注入的可能性打开了大门)


实现这一点的方法是使用prepared语句创建动态SQL。

在执行此操作之前,请阅读有关SQL注入攻击的内容。