Preparare ed eseguire un'istruzione (ODBC)
Per preparare un'istruzione da eseguire più volte
Chiamare la funzione SQLPrepare per preparare l'istruzione.
Facoltativamente, chiamare SQLNumParams per determinare il numero di parametri da inserire nell'istruzione preparata.
Per ogni parametro dell'istruzione preparata è possibile:
Chiamare SQLDescribeParam per ottenere informazioni sul parametro.
Associare ogni parametro a una variabile di programma utilizzando SQLBindParameter. Configurare i parametri data-at-execution.
Per ogni esecuzione di un'istruzione preparata:
Se nell'istruzione sono inclusi marcatori di parametro, inserire i valori dei dati nel buffer di parametri associato.
Chiamare SQLExecute per eseguire l'istruzione preparata.
Se vengono utilizzati parametri di input data-at-execution, SQLExecute restituisce SQL_NEED_DATA. Inviare i dati in blocchi utilizzando SQLParamData e SQLPutData.
Per preparare un'istruzione con associazione di parametri a livello di colonna
Chiamare SQLSetStmtAttr per impostare gli attributi seguenti:
Impostare SQL_ATTR_PARAMSET_SIZE sul numero di set (S) di parametri.
Impostare SQL_ATTR_PARAM_BIND_TYPE su SQL_PARAMETER_BIND_BY_COLUMN.
Impostare l'attributo SQL_ATTR_PARAMS_PROCESSED_PTR in modo che punti a una variabile SQLUINTEGER che contenga il numero di parametri elaborati.
Impostare SQL_ATTR_PARAMS_STATUS_PTR in modo che punti a una matrice [S] di variabili SQLUSSMALLINT che contenga gli indicatori di stato dei parametri.
Chiamare SQLPrepare per preparare l'istruzione.
Facoltativamente, chiamare SQLNumParams per determinare il numero di parametri da inserire nell'istruzione preparata.
Per ogni parametro dell'istruzione preparata è possibile chiamare SQLDescribeParam per ottenere informazioni sui parametri.
Per ogni marcatore di parametro:
Allocare una matrice di buffer di S parametri per archiviare i valori dei dati.
Allocare una matrice di buffer di S parametri per archiviare le lunghezze dei dati.
Chiamare SQLBindParameter per associare le matrici delle lunghezze e dei valori dei dati di parametro al parametro di istruzione.
Se il parametro è un testo data-at-execution o un parametro di immagine, configurarlo.
Se vengono utilizzati parametri data-at-execution, configurarli.
Per ogni esecuzione di un'istruzione preparata:
Inserire le S lunghezze e gli S valori di dati nelle matrici di parametri associate.
Chiamare SQLExecute per eseguire l'istruzione preparata.
Se vengono utilizzati parametri di input data-at-execution, SQLExecute restituisce SQL_NEED_DATA. Inviare i dati in blocchi utilizzando SQLParamData e SQLPutData.
Per preparare un'istruzione con associazione di parametri a livello di riga
Allocare una matrice[S] di strutture, dove S è il numero di set di parametri. Nella struttura è presente un elemento per ogni parametro e ogni elemento è costituito da due parti:
La prima parte è una variabile del tipo di dati appropriato che contiene i dati dei parametri.
La seconda parte è una variabile SQLINTEGER che deve contenere l'indicatore di stato.
Chiamare SQLSetStmtAttr per impostare gli attributi seguenti:
Impostare SQL_ATTR_PARAMSET_SIZE sul numero di set (S) di parametri.
Impostare SQL_ATTR_PARAM_BIND_TYPE sulla dimensione della struttura allocata nel Passaggio 1.
Impostare l'attributo SQL_ATTR_PARAMS_PROCESSED_PTR in modo che punti a una variabile SQLUINTEGER che contenga il numero di parametri elaborati.
Impostare SQL_ATTR_PARAMS_STATUS_PTR in modo che punti a una matrice [S] di variabili SQLUSSMALLINT che contenga gli indicatori di stato dei parametri.
Chiamare SQLPrepare per preparare l'istruzione.
Per ogni marcatore di parametro, chiamare SQLBindParameter in modo che il valore dei dati di parametro e il puntatore della lunghezza dei dati puntino alle relative variabili nel primo elemento della matrice di strutture allocate nel passaggio 1. Se il parametro è di tipo data-at-execution, configurarlo.
Per ogni esecuzione di un'istruzione preparata:
Inserire i valori dei dati nella matrice di buffer dei parametri associati.
Chiamare SQLExecute per eseguire l'istruzione preparata. Il driver esegue in modo efficace l'istruzione SQL S volte, una volta per ogni set di parametri.
Se vengono utilizzati parametri di input data-at-execution, SQLExecute restituisce SQL_NEED_DATA. Inviare i dati in blocchi utilizzando SQLParamData e SQLPutData.