Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gespeicherte Prozedur mit optionalen WHERE-Parametern

Eine der einfachsten Möglichkeiten, dies zu erreichen:

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))

usw. Dadurch wird dynamisches SQL vollständig eliminiert und Sie können nach einem oder mehreren Feldern suchen. Indem Sie dynamisches SQL eliminieren, beseitigen Sie ein weiteres Sicherheitsproblem bezüglich der SQL-Einschleusung.