SQLPrepare
Il driver ODBC di SQL Server Native Client crea una stored procedure temporanea dalle istruzioni SQL preparate. Le stored procedure rappresentano un modo efficiente per eseguire un'istruzione più volte, sebbene la creazione di stored procedure sia un'operazione più dispendiosa rispetto all'esecuzione di un'istruzione semplice. Come regola generale, utilizzare SQLPrepare e SQLExecute se l'applicazione invia un'istruzione SQL più di tre volte.
[!NOTA]
SQL Server supporta il modello di preparazione/esecuzione di ODBC. Questa descrizione del comportamento di SQLPrepare/SQLExecute è applicabile solo alle versioni di SQL Server precedenti alla 7.0.
Una stored procedure temporanea creata da SQLPrepare viene denominata **#odbc#**IDutente, dove IDutente rappresenta il nome utente composto da un massimo di sei caratteri concatenato a un massimo di otto cifre che identificano la procedura.
SQLPrepare crea la stored procedure temporanea se tutti i valori dei parametri sono stati associati o se l'istruzione SQL non contiene parametri. SQLExecute crea la stored procedure se tutti i parametri non sono stati associati durante la chiamata a SQLPrepare.
SQLPrepare può creare stored procedure in modo più efficiente di SQLExecute ed è consigliabile utilizzare SQLBindParameter per associare le variabili dei parametri prima di chiamare SQLPrepare.
Se l'istruzione CREATE PROCEDURE utilizzata per generare una stored procedure temporanea restituisce un errore, SQLPrepare o SQLExecute invia l'istruzione a SQL Server con l'opzione SET NOEXEC o SET PARSEONLY abilitata, a seconda del tipo di istruzione. SQL Server verifica la sintassi dell'istruzione e restituisce gli eventuali errori.
SQLExecute può restituire gli stessi errori ODBC SQLSTATE e SQL Server che possono essere restituiti da SQLPrepare.
Il driver ODBC di SQL Server Native Client crea una nuova stored procedure temporanea se vengono modificati i valori InputOutputType, ParameterType, ColumnSize o DecimalDigits nelle chiamate a SQLBindParameter in un'istruzione preparata. Non viene creata una nuova stored procedure temporanea quando vengono modificati i parametri associati puntando a nuovi buffer nella memoria del client, viene modificata la lunghezza della memoria del client oppure viene modificato il puntatore alla lunghezza o il valore dell'indicatore per il parametro.
Se per qualsiasi motivo una connessione non può creare una stored procedure, ad esempio per mancanza di autorizzazioni, il driver ODBC di SQL Server Native Client non utilizza una stored procedure, bensì invia l'istruzione SQL ogni volta che viene chiamato SQLExecute.
Per impostazione predefinita, il driver ODBC di SQL Server Native Client elimina le stored procedure temporanee quando viene interrotta la connessione, ovvero viene chiamato SQLDisconnect per la connessione. Questa condizione può causare problemi se la connessione doveva rimanere aperta per un periodo di tempo illimitato. Il comportamento predefinito può essere modificato utilizzando l'opzione di connessione specifica del driver SQL_USE_PROCEDURE_FOR_PREPARE.
[!NOTA]
Se è stato eseguito SET NOCOUNT ON, più istruzioni incorporate in una stored procedure non creano più set di risultati come previsto. Il conteggio delle righe generato dalle istruzioni SQL in una stored procedure viene ignorato dal driver.