sql >> Databasteknik >  >> RDS >> Mysql

Lagrad procedur med valfria WHERE-parametrar

Ett av de enklaste sätten att åstadkomma detta:

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. Detta eliminerar helt dynamisk sql och låter dig söka på ett eller flera fält. Genom att eliminera dynamisk sql tar du bort ytterligare ett säkerhetsproblem angående sql-injektion.



  1. Ansluter FlySpeed ​​SQL Query till Salesforce.com

  2. Bulk DELETE på SQL Server 2008 (Finns det något liknande Bulk Copy (bcp) för radering av data?)

  3. migrera data från MS SQL till PostgreSQL?

  4. Hur funktionen OCTET_LENGTH() fungerar i MySQL