Compartilhar via


Como preparar e executar uma instrução (ODBC)

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

  1. Chame 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 qualquer parâmetro 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âmetros associado.

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

    • Se forem usados parâmetros de entrada de dados em execução, 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 de coluna

  1. Chame SQLSetStmtAttr para definir os seguintes atributos:

    • Defina SQL_ATTR_PARAMSET_SIZE como 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 de forma que aponte para uma variável SQLUINTEGER que contém o número de parâmetros processados.

    • Defina SQL_ATTR_PARAMS_STATUS_PTR de forma que aponte para uma matriz[S] de variáveis SQLUSSMALLINT que contém 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 S buffers de parâmetro para armazenar valores de dados.

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

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

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

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

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

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

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

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

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

  1. Aloque uma matriz[S] de estruturas, onde 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 que contém os dados de parâmetro.

    • A segunda parte é uma variável SQLINTEGER que contém o indicador de status.

  2. Chame SQLSetStmtAttr para definir os seguintes atributos:

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

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

    • Defina o atributo SQL_ATTR_PARAMS_PROCESSED_PTR de forma que aponte para uma variável SQLUINTEGER que contém o número de parâmetros processados.

    • Defina SQL_ATTR_PARAMS_STATUS_PTR de forma que aponte para uma matriz[S] de variáveis SQLUSSMALLINT que contém 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 ponteiro de comprimento de dados e de valor de dados de parâmetro 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 buffers de parâmetros associada com valores de dados.

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

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