Identificadores de descriptor

Un descriptor es una colección de metadatos que describe los parámetros de una instrucción SQL o las columnas de un conjunto de resultados, tal como lo ve la aplicación o el controlador (también conocido como implementación). Así, un descriptor puede desempeñar cualquiera de los cuatro roles siguientes:

  • Descriptor de parámetros de aplicación (APD). Contiene información sobre los búferes de aplicación enlazados a los parámetros de una instrucción SQL, como sus direcciones, longitudes y tipos de datos de C.

  • Descriptor de parámetros de implementación (IPD). Contiene información sobre los parámetros de una instrucción SQL, como sus tipos de datos SQL, longitudes y nulabilidad.

  • Descriptor de fila de aplicación (ARD). Contiene información sobre los búferes de aplicación vinculados a las columnas de un conjunto de resultados, como sus direcciones, longitudes y tipos de datos C.

  • Descriptor de fila de implementación (IRD). Contiene información sobre las columnas de un conjunto de resultados, como sus tipos de datos SQL, longitudes y nulabilidad.

Cuando se asigna una instrucción, se asignan automáticamente cuatro descriptores (uno para cada rol). Se denominan descriptores asignados automáticamente y siempre están asociados a esa instrucción. Las aplicaciones también pueden asignar descriptores con SQLAllocHandle. Se denominan descriptores asignados explícitamente. Se asignan en una conexión y pueden asociarse a una o más instrucciones en esa conexión para cumplir el papel de un APD o ARD en esas instrucciones.

La mayoría de las operaciones en ODBC pueden realizarse sin el uso explícito de descriptores por parte de la aplicación. Sin embargo, los descriptores proporcionan un acceso directo conveniente para algunas operaciones. Por ejemplo, supongamos que una aplicación desea insertar datos de dos conjuntos diferentes de búferes. Para usar el primer conjunto de búferes, tendría que llamar repetidamente a SQLBindParameter para vincularlos a los parámetros de una instrucción INSERT y, a continuación, ejecutar la instrucción. Para usar el segundo conjunto de búferes, repetiría este proceso. Otra posibilidad es establecer enlaces al primer conjunto de búferes en un descriptor y al segundo conjunto de búferes en otro descriptor. Para cambiar entre los conjuntos de enlaces, la aplicación simplemente llamaría a SQLSetStmtAttr y asociaría el descriptor correcto con la instrucción como APD.

Para más información sobre descriptores, consulte Tipos de descriptores.