Asignar un identificador de instrucción
Antes de que una aplicación pueda ejecutar una instrucción, debe asignar un identificador de instrucción. Esto se lleva a cabo mediante una llamada a SQLAllocHandle con el parámetro HandleType establecido en SQL_HANDLE_STMT e InputHandle que señala a un identificador de conexión.
Los atributos de instrucción son características del identificador de instrucción. Los atributos de instrucción de ejemplo pueden incluir la utilización de marcadores y el tipo de cursor que se debe utilizar con el conjunto de resultados de la instrucción. Los atributos de instrucción se establecen al SQLSetStmtAttr y su configuración actual se recupera mediante SQLGetStmtAttr. No es necesario que una aplicación establezca atributos de instrucción; todos los atributos de instrucción tienen valores predeterminados y algunos son específicos de controlador.
Actúe con precaución al usar varias opciones de instrucción y conexión de ODBC. La llamada a SQLSetConnectAttr con fOption establecido en SQL_ATTR_LOGIN_TIMEOUT controla el tiempo que espera una aplicación antes de que transcurra el tiempo de espera mientras espera que se establezca una conexión (0 especifica una espera infinita). Los sitios con tiempos de respuesta lentos pueden establecer este valor alto para asegurarse de que las conexiones disponen de tiempo suficiente para completarse. Sin embargo, el intervalo siempre debe ser lo suficientemente bajo como para proporcionar al usuario una respuesta en un tiempo razonable si el controlador no puede conectar.
La llamada a SQLSetStmtAttr con fOption establecido en SQL_ATTR_QUERY_TIMEOUT establece un intervalo de tiempo de espera de la consulta que ayuda a proteger el servidor y al usuario ante consultas de ejecución prolongada.
La llamada a SQLSetStmtAttr con fOption establecido en SQL_ATTR_MAX_LENGTH limita la cantidad de datos text e image que puede recuperar una instrucción individual. La llamada a SQLSetStmtAttr con fOption establecido en SQL_ATTR_MAX_ROWS también limita un conjunto de filas a las n primeras filas si son las únicas que requiere la aplicación. Observe que el valor SQL_ATTR_MAX_ROWS hace que el controlador emita una instrucción SET ROWCOUNT al servidor. Esto afecta a todas las instrucciones de Microsoft SQL Server, incluidos los desencadenadores y las actualizaciones.
Actúe con precaución cuando establezca estas opciones. Es preferible que todos los identificadores de instrucción de un identificador de conexión tengan la misma configuración en SQL_ATTR_MAX_LENGTH y SQL_ATTR_MAX_ROWS. Si el controlador cambia de un identificador de instrucción a otro con valores diferentes en estas opciones, debe generar las instrucciones SET TEXTSIZE y SET ROWCOUNT adecuadas para cambiar los valores. El controlador no puede colocar estas instrucciones en el mismo lote que la instrucción SQL del usuario porque la instrucción SQL del usuario puede contener una instrucción que debe ser la primera de un lote. El controlador debe enviar las instrucciones SET TEXTSIZE y SET ROWCOUNT en un lote independiente, que genera automáticamente un viaje de ida y vuelta (round trip) adicional al servidor.