Como executar diretamente uma instrução (ODBC)
Para executar uma instrução diretamente e apenas uma vez
Se a instrução tiver marcadores de parâmetro, use SQLBindParameter para associar cada parâmetro a uma variável de programa. Preencha as variáveis de programa com valores de dados e configure todos os parâmetros de dados em execução.
Chame SQLExecDirect para executar a instrução.
Se forem usados parâmetros de entrada de dados em execução, SQLExecDirect retornará SQL_NEED_DATA. Envie os dados em partes usando SQLParamData e SQLPutData.
Para executar uma instrução várias vezes usando a associação de parâmetros por 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 os indicadores de status 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.
Configure quaisquer parâmetros de imagem ou texto de dados em execução.
Coloque os valores de dados S e os comprimentos de dados S nas matrizes de parâmetro associadas.
Chame SQLExecDirect para executar a instrução. O driver executa a instrução de maneira eficiente S vezes, sendo uma para cada conjunto de parâmetros.
Se forem usados parâmetros de entrada de dados em execução, SQLExecDirect retornará SQL_NEED_DATA. Envie os dados em partes usando SQLParamData e SQLPutData.
Para executar uma instrução várias vezes usando a associação de parâmetros por 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 os indicadores de status de parâmetro.
Para cada marcador de parâmetro, chame SQLBindParameter para direcionar o ponteiro de comprimento de dados e de valor de dados do 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.
Preencha a matriz de buffers de parâmetros associada com valores de dados.
Chame SQLExecDirect para executar a instrução. O driver executa a instrução de maneira eficiente S vezes, sendo uma para cada conjunto de parâmetros.
Se forem usados parâmetros de entrada de dados em execução, SQLExecDirect retornará SQL_NEED_DATA. Envie os dados em partes usando SQLParamData e SQLPutData.
Observação: as associações por coluna e por linha geralmente são mais usadas em conjunto com SQLPrepare e SQLExecute do que com SQLExecDirect.