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

dynamické předávání názvu tabulky a sloupce pomocí vazebných proměnných

Názvy tabulek a sloupců nelze předat jako vazebné proměnné, ne. Celý smysl vazebných proměnných je v tom, že Oracle může vygenerovat plán dotazů jednou pro příkaz a poté jej mnohokrát provést s různými hodnotami vazebných proměnných. Pokud optimalizátor neví, ke které tabulce se přistupuje nebo jaké sloupce jsou vybírány a filtrovány, nemůže vygenerovat plán dotazů.

Pokud se vaše obavy týkají útoků SQL injection a za předpokladu, že dynamický SQL je skutečně nezbytný (ve většině případů nutnost uchýlit se k dynamickému SQL znamená problémy s datovým modelem), můžete použít DBMS_ASSERT balíček, abyste ověřili, že názvy tabulek a sloupců neobsahují vložené SQL.



  1. Příkazy IF-THEN-ELSE v postgresql

  2. funkce listunagg?

  3. MySQL Spustí po aktualizaci pouze v případě, že se řádek změnil

  4. Přidání databázového poštovního účtu do profilu (SSMS)