sql >> Database >  >> RDS >> Mysql

Opgeslagen procedure met optionele WHERE-parameters

Een van de gemakkelijkste manieren om dit te bereiken:

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

enz. Dit elimineert dynamische sql volledig en stelt u in staat om op een of meer velden te zoeken. Door dynamische sql te elimineren, neemt u nog een ander beveiligingsprobleem met betrekking tot sql-injectie weg.



  1. mysql -> invoegen in tbl (selecteer uit een andere tabel) en enkele standaardwaarden

  2. Hoe u uw PostgreSQL-databases beheert vanuit de ClusterControl CLI

  3. Vraag meerdere NEXTVAL uit een reeks in één instructie

  4. Interne SQL Server:problematische operators Pt. II – Hashing