Compartir a través de


Ejecutar una instrucción directamente (ODBC)

Para ejecutar una instrucción directamente y una sola vez

  1. Si la instrucción tiene marcadores de parámetros, use SQLBindParameter para enlazar cada parámetro a una variable de programa. Rellene las variables de programa con valores de datos y, a continuación, configure los parámetros de datos en ejecución.

  2. Llame a SQLExecDirect para ejecutar la instrucción .

  3. Si se usan parámetros de entrada de datos en ejecución, SQLExecDirect devuelve SQL_NEED_DATA. Envíe los datos en fragmentos mediante SQLParamData y SQLPutData.

Para ejecutar una instrucción varias veces mediante el enlace de parámetros de columna

  1. Llame a SQLSetStmtAttr para establecer los atributos siguientes:

    Establezca SQL_ATTR_PARAMSET_SIZE en el número de conjuntos (S) de parámetros.

    Establezca SQL_ATTR_PARAM_BIND_TYPE en SQL_PARAMETER_BIND_BY_COLUMN.

    Establezca el atributo SQL_ATTR_PARAMS_PROCESSED_PTR para que apunte a una variable SQLUINTEGER para contener el número de parámetros procesados.

    Establezca SQL_ATTR_PARAMS_STATUS_PTR para que apunte a una matriz[S] de variables SQLUSSMALLINT para contener los indicadores de estado del parámetro.

  2. Para cada marcador de parámetro:

    Asigne una matriz de búferes de parámetros S para almacenar valores de datos.

    Asigne una matriz de búferes de parámetros S para almacenar longitudes de datos.

    Llame a SQLBindParameter para enlazar el valor de datos de parámetro y las matrices de longitud de datos al parámetro de instrucción.

    Configure los parámetros de texto o imagen de datos en ejecución.

    Coloque los valores de datos S y las longitudes de datos S en las matrices de parámetros enlazados.

  3. Llame a SQLExecDirect para ejecutar la instrucción . El controlador ejecuta eficazmente la instrucción S veces, una vez para cada conjunto de parámetros.

  4. Si se usan parámetros de entrada de datos en ejecución, SQLExecDirect devuelve SQL_NEED_DATA. Envíe los datos en fragmentos mediante SQLParamData y SQLPutData.

Para ejecutar una instrucción varias veces mediante el enlace de parámetros de fila

  1. Asigne una matriz[S] de estructuras, donde S es el número de conjuntos de parámetros. La estructura tiene un elemento para cada parámetro y cada elemento tiene dos partes:

    La primera parte es una variable del tipo de datos adecuado para contener los datos del parámetro.

    La segunda parte es una variable SQLINTEGER para contener el indicador de estado.

  2. Llame a SQLSetStmtAttr para establecer los atributos siguientes:

    Establezca SQL_ATTR_PARAMSET_SIZE en el número de conjuntos (S) de parámetros.

    Establezca SQL_ATTR_PARAM_BIND_TYPE en el tamaño de la estructura asignada en el paso 1.

    Establezca el atributo SQL_ATTR_PARAMS_PROCESSED_PTR para que apunte a una variable SQLUINTEGER para contener el número de parámetros procesados.

    Establezca SQL_ATTR_PARAMS_STATUS_PTR para que apunte a una matriz[S] de variables SQLUSSMALLINT para contener los indicadores de estado del parámetro.

  3. Para cada marcador de parámetro, llame a SQLBindParameter para apuntar el valor de datos del parámetro y el puntero de longitud de datos a sus variables en el primer elemento de la matriz de estructuras asignadas en el paso 1. Si el parámetro es un parámetro data-at-execution, establézcalo.

  4. Rellene la matriz de búfer de parámetros enlazados con valores de datos.

  5. Llame a SQLExecDirect para ejecutar la instrucción . El controlador ejecuta eficazmente la instrucción S veces, una vez para cada conjunto de parámetros.

  6. Si se usan parámetros de entrada de datos en ejecución, SQLExecDirect devuelve SQL_NEED_DATA. Envíe los datos en fragmentos mediante SQLParamData y SQLPutData.

Nota El enlace de columnas y de fila se usa más normalmente junto con la función SQLPrepare y SQLExecute que con SQLExecDirect.

Véase también

Ejecución de temas de procedimientos de consultas (ODBC)