SQLSetConnectAttr--Establecer opciones referentes a una conexión

Finalidad

Especificación: CLI de DB2 ODBC 1.0 ISO CLI

SQLSetConnectAttr() establece opciones relacionadas con una conexión

Sintaxis

SQLRETURN   SQLSetConnectAttr   (SQLHDBC        ConnectionHandle,   
                              SQLINTEGER        Attribute,         
                              SQLPOINTER        ValuePtr,          
                              SQLINTEGER        StringLength);     

Argumentos de la función

Tabla 80. Argumentos de SQLSetConnectAttr

Tipo de datos Argumento Uso Descripción
SQLHDBC ConnectionHandle entrada Descriptor de contexto de conexión.
SQLINTEGER Attribute entrada Opción para definir.
SQLPOINTER ValuePtr entrada Si Attribute es un atributo definido por ODBC y ValuePtr apunta a una serie de caracteres o almacenamiento intermedio binario, este argumento debe ser igual a la longitud de ValuePtr. Si Attribute es un atributo definido por ODBC y ValuePtr es un entero, no se tiene en cuenta StringLength.

Si Attribute es un atributo de CLI de DB2, la aplicación indica la naturaleza del atributo estableciendo el argumento StringLength. StringLength puede tener los valores siguientes:

  • Si ValuePtr es un puntero que apunta a una serie de caracteres, StringLength es la longitud de la serie o SQL_NTS.
  • Si ValuePtr es un puntero que apunta a un almacenamiento intermedio binario, la aplicación coloca el resultado de la macro SQL_LEN_BINARY_ATTR(length) en StringLength. Esto coloca un valor negativo en StringLength.
  • Si ValuePtr es un puntero que apunta a un valor distinto de una serie de caracteres o serie binaria, el valor de StringLength debe ser SQL_IS_POINTER.
  • Si ValuePtr contiene un valor de longitud fija, StringLength es SQL_IS_INTEGER o SQL_IS_UINTEGER, según corresponda.
SQLINTEGER StringLength entrada Si ValuePtr apunta a una serie de caracteres o almacenamiento intermedio binario, este argumento debe ser igual a la longitud de ValuePtr. Si ValuePtr es un puntero, pero no apunta a una serie de caracteres ni a un almacenamiento intermedio binario, StringLength debe tener el valor SQL_IS_POINTER. Si ValuePtr no es un puntero, el valor de StringLength debe ser SQL_IS_NOT_POINTER.

Uso

Los atributos de una conexión permanecen vigentes hasta que son modificados por otra llamada a SQLSetConnectAttr() o hasta que la conexión se descarta mediante una llamada a SQLDisconnect().

SQLSetConnectAttr() acepta información sobre atributos en uno de dos formatos diferentes: una serie de caracteres terminada en nulo o un valor entero de 32 bits. El formato del atributo está indicado en la descripción del atributo. Las series de caracteres a las que apunta el argumento ValuePtr de SQLSetConnectAttr() tienen una longitud igual a StringLength.

Atributos de conexión

A continuación se muestran los atributos definidos actualmente.

SQL_ATTR_AUTOCOMMIT (DB2 CLI/ODBC)
Valor entero de 32 bits que especifica el tipo de modalidad. Los valores soportados son:

SQL_ATTR_CONNECTION_DEAD (DB2 CLI/ODBC)
Un valor entero de 32 bits READ ONLY que indica si la conexión está o no está aún activa. DB2 CLI devolverá uno de los valores siguientes:

SQL_ATTR_LOGIN_TIMEOUT (DB2 CLI/ODBC)
Valor entero de 32 bits que corresponde al número de segundos que se deberá esperar a que finalice una petición de inicio de sesión antes de devolver el control a la aplicación.

SQL_ATTR_FILENAME_FORMAT (DB2 Everyplace)
Un entero de 32 bits especifica si el motor de bases de datos DB2e debe crear nombres de archivo en formato largo o de 8.3. Las aplicaciones sólo tienen permitido cambiar el formato de nombres de archivo si no existe ningún archivo de catálogo en la vía de acceso conectada cuando se invoca a SQLSetConnectAttr. Se devolverá SQL_ERROR con SQLState HY000 si se deniega un cambio del formato de nombres de archivo debido a que previamente existían archivos de catálogo. Por ejemplo, si una aplicación conecta con una vía de acceso en que ya existe archivos de catálogo de DB2 Everyplace, cualquier intento de cambiar el formato de nombres de archivo fallará. Si una aplicación conecta con una vía de acceso en que no existe ningún archivo de catálogo e intenta cambiar el formato de nombres de archivo después de la primera sentencia CREATE TABLE, SQLSetConnectAttr también devolverá SQL_ERROR. Esto es debido a que se crean archivos de catálogo durante la realmente primera sentencia CREATE TABLE, y no está permitido cambiar el formato de nombres de archivo después de la creación de archivos de catálogo. El formato de nombres de archivo por omisión depende de la plataforma. Actualmente, SQL_FILENAME_FORMAT_LONG es el valor por omisión para todas las plataformas soportadas.

Valores de atributos:

 SQL_FILENAME_FORMAT_LONG - los archivos se
crearán en formato de nombre de archivo largo.
 SQL_FILENAME_FORMAT_83- los archivos se crearán en formato de
nombre de archivo 8.3.

Códigos de retorno

Diagnósticos

Tabla 81. SQLSTATEs de SQLSetConnectAttr

SQLSTATE Descripción Explicación
HY000 Error general. El formato de nombres de archivo no se puede cambiar.
HY001 Error de asignación de memoria. CLI de DB2 no puede asignar la memoria necesaria para ejecutar o finalizar la función.
HY014 No hay más descriptores de contexto. CLI de DB2 no pudo asignar un descriptor de contexto debido a recursos internos.
HY090 Longitud no válida de la serie de caracteres o del almacenamiento intermedio. El valor de uno de los argumentos de longitud de nombre era menor que 0, pero no era igual a SQL_NTS.

Restricciones

Consulta relacionada