Como preparar e executar uma instrução (ODBC)
Para preparar uma instrução uma vez e, depois, executá-la várias vezes
Chame SQLPrepare para preparar a instrução.
Opcionalmente, chame SQLNumParams para determinar o número de parâmetros na instrução preparada.
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.
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
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.
Chame SQLPrepare para preparar a instrução.
Opcionalmente, chame SQLNumParams para determinar o número de parâmetros na instrução preparada.
Opcionalmente, para cada parâmetro na instrução preparada, chame SQLDescribeParam para obter informações de parâmetro.
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.
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
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.
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.
Chame SQLPrepare para preparar a instrução.
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.
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.