sql >> Databáze >  >> RDS >> Oracle

Jak zacházet s volitelnými parametry v dotazu SQL?

Ano, pomocí některé z následujících možností:

WHERE m.id_pk = NVL(n_RequiredId, m.id_pk);
WHERE m.id_pk = COALESCE(n_RequiredId, m.id_pk);
WHERE (n_RequiredId IS NULL OR m.id_pk = n_RequiredId);

...nejsou pohyblivé. Budou fungovat, ale budou mít nejhorší z dostupných možností.

Pokud máte pouze jeden parametr, jsou lepší alternativou IF/ELSE a samostatné, přizpůsobené příkazy.

Další možností je dynamické SQL. Ale kódování dynamického SQL je k ničemu, pokud přenesete nesměnitelné predikáty v prvním příkladu. Dynamické SQL vám umožňuje přizpůsobit dotaz a zároveň vyhovět mnoha cestám. Ale také riskuje vkládání SQL, takže by mělo být prováděno za parametrizovanými dotazy (nejlépe v rámci uložených procedur/funkcí v balíčcích.



  1. Jak obnovit databázi pomocí Správce zálohování

  2. Řetězce formátu data MariaDB

  3. Createuser:nemohl se připojit k databázi postgres:FATAL:role tom neexistuje

  4. Kombinace výkonu SQL a procedurálních příkazů s režimem kompatibility Oracle MariaDB