Eseguire un'istruzione direttamente (ODBC)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Per eseguire un'istruzione direttamente e solo una volta

  1. Se l'istruzione include marcatori di parametro, usare SQLBindParameter per associare ogni parametro a una variabile di programma. Inserire nelle variabili di programma i valori dei dati e quindi configurare tutti i parametri data-at-execution.

  2. Chiamare SQLExecDirect per eseguire l'istruzione .

  3. Se vengono usati parametri di input di dati in fase di esecuzione, SQLExecDirect restituisce SQL_NEED_DATA. Inviare i dati in blocchi usando SQLParamData e SQLPutData.

Per eseguire un'istruzione più volte utilizzando l'associazione di parametri per colonna

  1. 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 contenente gli indicatori di stato dei parametri.

  2. 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 il valore dei dati del parametro e le matrici di lunghezza dei dati al parametro dell'istruzione .

    Configurare tutti i parametri data-at-execution di tipo text o image.

    Inserire S valori dei dati e S lunghezze dei dati nella matrice di parametri associati.

  3. Chiamare SQLExecDirect per eseguire l'istruzione . Il driver esegue in modo efficace l'istruzione S volte, una volta per ogni set di parametri.

  4. Se vengono usati parametri di input di dati in fase di esecuzione, SQLExecDirect restituisce SQL_NEED_DATA. Inviare i dati in blocchi usando SQLParamData e SQLPutData.

Per eseguire un'istruzione più volte utilizzando l'associazione di parametri per riga

  1. 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.

  2. 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 contenente gli indicatori di stato dei parametri.

  3. Per ogni marcatore di parametro, chiamare SQLBindParameter per puntare il valore dei dati del parametro e il puntatore alla lunghezza dei dati alle relative variabili nel primo elemento della matrice di strutture allocate nel passaggio 1. Se il parametro è di tipo data-at-execution, configurarlo.

  4. Inserire i valori dei dati nella matrice di buffer dei parametri associati.

  5. Chiamare SQLExecDirect per eseguire l'istruzione . Il driver esegue in modo efficace l'istruzione S volte, una volta per ogni set di parametri.

  6. Se vengono usati parametri di input di dati in fase di esecuzione, SQLExecDirect restituisce SQL_NEED_DATA. Inviare i dati in blocchi usando SQLParamData e SQLPutData.

Nota L'associazione a livello di colonna e riga viene in genere usata in combinazione con la funzione SQLPrepare e SQLExecute rispetto a SQLExecDirect.

Vedere anche

Procedure per l'esecuzione di query (ODBC)