Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Procedimento armazenado com parâmetros WHERE opcionais


Uma das maneiras mais fáceis de fazer isso:
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))

etc.Isso elimina completamente o sql dinâmico e permite pesquisar em um ou mais campos. Ao eliminar o sql dinâmico, você remove ainda outra preocupação de segurança em relação à injeção de sql.