sql >> Database >  >> RDS >> Oracle

tabel- en kolomnaam dynamisch doorgeven met behulp van bindvariabelen

Tabel- en kolomnamen kunnen niet worden doorgegeven als bindvariabelen, nee. Het hele punt van bindvariabelen is dat Oracle één keer een queryplan voor de instructie kan genereren en dit vervolgens vele malen kan uitvoeren met verschillende bindvariabelewaarden. Als de optimizer niet weet welke tabel wordt geopend of op welke kolommen wordt geselecteerd en gefilterd, kan hij geen queryplan genereren.

Als uw bezorgdheid betrekking heeft op aanvallen met SQL-injectie en ervan uitgaande dat dynamische SQL echt nodig is (meestal impliceert de noodzaak om toevlucht te nemen tot dynamische SQL problemen met het gegevensmodel), kunt u de DBMS_ASSERT gebruiken pakket om te valideren dat de tabelnamen en kolomnamen geen ingesloten SQL bevatten.



  1. Omgekeerde tekenreeks woord voor woord met behulp van SQL

  2. Hoe los ik de fout 'Named Pipes Provider, error 40 - Kan geen verbinding met' SQL Server' op?

  3. Verschillende MySQL-opslagengines gebruiken bij het ontwerpen van databases

  4. Hoe de niet-null-beperking in MySQL te verwijderen?