Oracle
 sql >> Database >  >> RDS >> Oracle

passando il nome della tabella e della colonna in modo dinamico utilizzando le variabili di collegamento

I nomi di tabelle e colonne non possono essere passati come variabili di collegamento, no. Il punto centrale delle variabili di associazione è che Oracle può generare un piano di query una volta per l'istruzione e quindi eseguirlo molte volte con valori di variabili di associazione diversi. Se l'ottimizzatore non sa a quale tabella si sta accedendo o su quali colonne vengono selezionate e filtrate, non può generare un piano di query.

Se la tua preoccupazione riguarda gli attacchi SQL injection e supponendo che l'SQL dinamico sia effettivamente necessario (il più delle volte, la necessità di ricorrere all'SQL dinamico implica problemi con il modello di dati), puoi utilizzare il DBMS_ASSERT pacchetto per verificare che i nomi delle tabelle e delle colonne non contengano SQL incorporato.