Compartilhar via


Preparar e executar uma instrução (ODBC)

Para preparar uma instrução uma vez e executá-la várias vezes

  1. Chame a Função SQLPrepare para preparar a instrução.

  2. Opcionalmente, chame SQLNumParams para determinar o número de parâmetros na instrução preparada.

  3. Opcionalmente, para cada parâmetro na instrução preparada:

    • Chame SQLDescribeParam para obter informações de parâmetro.

    • Associe cada parâmetro a uma variável de programa usando SQLBindParameter. Configure todos os parâmetros de dados em execução.

  4. Para cada execução de uma instrução preparada:

    • Se a instrução tiver marcadores de parâmetro, coloque os valores de dados no buffer de parâmetro associado.

    • Chame SQLExecute para executar a instrução preparada.

    • Se os parâmetros de entrada de dados em execução forem usados, SQLExecute retornará SQL_NEED_DATA. Envie os dados em partes usando SQLParamData e SQLPutData.

Para preparar uma instrução com associação de parâmetro em termos de coluna

  1. Chame SQLSetStmtAttr para definir os seguintes atributos:

    • Defina SQL_ATTR_PARAMSET_SIZE para o número de conjuntos (S) de parâmetros.

    • Defina SQL_ATTR_PARAM_BIND_TYPE como SQL_PARAMETER_BIND_BY_COLUMN.

    • Defina o atributo SQL_ATTR_PARAMS_PROCESSED_PTR para apontar para uma variável SQLUINTEGER para manter o número de parâmetros processados.

    • Defina SQL_ATTR_PARAMS_STATUS_PTR para apontar para uma matriz[S] de variáveis SQLUSSMALLINT para manter indicadores de status de parâmetro.

  2. Chame SQLPrepare para preparar a instrução.

  3. Opcionalmente, chame SQLNumParams para determinar o número de parâmetros na instrução preparada.

  4. Opcionalmente, para cada parâmetro na instrução preparada, chame SQLDescribeParam para obter informações de parâmetro.

  5. Para cada marcador de parâmetro:

    • Aloque uma matriz de buffers de parâmetro S para armazenar valores de dados.

    • Aloque uma matriz de buffers de parâmetro S para armazenar comprimentos de dados.

    • Chame SQLBindParameter para associar o valor de dados do parâmetro e as matrizes de comprimento de dados ao parâmetro de instrução.

    • Se o parâmetro for um parâmetro de imagem ou texto de dados em execução, configure-o.

    • Se algum parâmetro de dados em execução for usado, configure-os.

  6. Para cada execução de uma instrução preparada:

    • Coloque os valores de dados S e os comprimentos de dados S nas matrizes de parâmetros associadas.

    • Chame SQLExecute para executar a instrução preparada.

    • Se os parâmetros de entrada de dados em execução forem usados, SQLExecute retornará SQL_NEED_DATA. Envie os dados em partes usando SQLParamData e SQLPutData.

Para preparar uma instrução com parâmetros associados em linha

  1. Aloque uma matriz[S] de estruturas, em que S é o número de conjuntos de parâmetros. A estrutura tem um elemento para cada parâmetro e cada elemento tem duas partes:

    • A primeira parte é uma variável do tipo de dados apropriado para manter os dados do parâmetro.

    • A segunda parte é uma variável SQLINTEGER para manter o indicador de status.

  2. Chame SQLSetStmtAttr para definir os seguintes atributos:

    • Defina SQL_ATTR_PARAMSET_SIZE para o número de conjuntos (S) de parâmetros.

    • Defina SQL_ATTR_PARAM_BIND_TYPE para o tamanho da estrutura alocada na Etapa 1.

    • Defina o atributo SQL_ATTR_PARAMS_PROCESSED_PTR para apontar para uma variável SQLUINTEGER para manter o número de parâmetros processados.

    • Defina SQL_ATTR_PARAMS_STATUS_PTR para apontar para uma matriz[S] de variáveis SQLUSSMALLINT para manter indicadores de status de parâmetro.

  3. Chame SQLPrepare para preparar a instrução.

  4. Para cada marcador de parâmetro, chame SQLBindParameter para apontar o valor de dados do parâmetro e o ponteiro de comprimento de dados para suas variáveis no primeiro elemento da matriz de estruturas alocadas na Etapa 1. Se o parâmetro for um parâmetro de dados em execução, configure-o.

  5. Para cada execução de uma instrução preparada:

    • Preencha a matriz de buffer de parâmetro associado com valores de dados.

    • Chame SQLExecute para executar a instrução preparada. O driver executa com eficiência os tempos S da instrução SQL, uma vez para cada conjunto de parâmetros.

    • Se os parâmetros de entrada de dados em execução forem usados, SQLExecute retornará SQL_NEED_DATA. Envie os dados em partes usando SQLParamData e SQLPutData.

Consulte Também

Executando tópicos de instruções de consultas (ODBC)