是否可以在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编程
实现这一点的方法是使用prepared语句创建动态SQL。在执行此操作之前,请阅读有关SQL注入攻击的内容。