Generazione di istruzioni in fase di esecuzione

Nella maggior parte delle applicazioni MicrosoftSQL Server che prevedono la generazione dinamica delle istruzioni SQL in fase di esecuzione, viene innanzitutto generata l'istruzione in modo dinamico e quindi viene chiamato un metodo o una funzione API del database per eseguire l'istruzione. Un'applicazione scritta nel linguaggio C che utilizza ODBC può, ad esempio, generare in modo dinamico una o più istruzioni SQL in una matrice di caratteri e quindi passare la matrice alle funzioni ODBC SQLPrepare o SQLExecDirect.

Transact-SQL supporta i metodi seguenti per la generazione di istruzioni SQL in fase di esecuzione in script, stored procedure e trigger di Transact-SQL:

  • Stored procedure di sistema sp_executesql per l'esecuzione di una stringa Unicode. sp_executesql supporta la sostituzione di parametri in modo analogo all'istruzione RAISERROR.

  • Istruzione EXECUTE per l'esecuzione di una stringa di caratteri. Questa istruzione non supporta la sostituzione di parametri all'interno della stringa eseguita.

    Nota sulla protezioneNota sulla protezione

    L'utilizzo dell'istruzione EXECUTE per eseguire una stringa facilita gli attacchi intrusivi nel codice SQL. È invece consigliabile utilizzare sp_executesql con i relativi parametri.