Share via


Convertir datos de C en tipos de datos SQL

Cuando una aplicación llama a SQLExecute o SQLExecDirect, el controlador recupera los datos de los parámetros enlazados con SQLBindParameter desde ubicaciones de almacenamiento de la aplicación. Cuando una aplicación llama a SQLSetPos, el controlador recupera los datos de una operación de actualización o adición de columnas enlazadas con SQLBindCol. Para los parámetros de datos en ejecución, la aplicación envía los datos de parámetro con SQLPutData. Si es necesario, el controlador convierte los datos del tipo de datos especificado por el argumento ValueType en SQLBindParameter al tipo de datos especificado por el argumento ParameterType en SQLBindParameter y, a continuación, envía los datos al origen de datos.

En la tabla siguiente se muestran las conversiones admitidas de tipos de datos ODBC C a tipos de datos SQL ODBC. Un círculo relleno indica la conversión predeterminada para un tipo de datos SQL (el tipo de datos C desde el que se convertirán los datos cuando el valor de ValueType o el campo descriptor de SQL_DESC_CONCISE_TYPE sea SQL_C_DEFAULT). Un círculo hueco indica una conversión admitida.

El formato de los datos convertidos no se ve afectado por la configuración de país o región de Windows.

Supported conversions: ODBC C to SQL data types

En las tablas de las secciones siguientes se describe cómo el controlador o el origen de datos convierte los datos enviados al origen de datos; Los controladores son necesarios para admitir conversiones de todos los tipos de datos ODBC C a los tipos de datos DE ODBC SQL que admiten. Para un tipo de datos ODBC C determinado, la primera columna de la tabla enumera los valores de entrada legales del argumento ParameterType en SQLBindParameter. En la segunda columna se enumeran los resultados de una prueba que realiza el controlador para determinar si puede convertir los datos. En la tercera columna se muestra la instrucción SQLSTATE devuelta por SQLExecDirect, SQLExecute, SQLBulkOperations, SQLSetPos o SQLPutData. Los datos se envían al origen de datos solo si se devuelve SQL_SUCCESS.

Si el argumento ParameterType de SQLBindParameter contiene el identificador de un tipo de datos SQL ODBC que no se muestra en la tabla para un tipo de datos C determinado, SQLBindParameter devuelve SQLSTATE 07006 (infracción de atributo de tipo de datos restringido). Si el argumento ParameterType contiene un identificador específico del controlador y el controlador no admite la conversión del tipo de datos ODBC C específico a ese tipo de datos SQL específico del controlador, SQLBindParameter devuelve SQLSTATE HYC00 (característica opcional no implementada).

Si los argumentos ParameterValuePtr y StrLen_or_IndPtr especificados en SQLBindParameter son punteros NULL, esa función devuelve SQLSTATE HY009 (uso no válido del puntero nulo). Aunque no se muestra en las tablas, una aplicación establece el valor del búfer de longitud o indicador al que apunta el argumento StrLen_or_IndPtr de SQLBindParameter o el valor del argumento StrLen_or_IndPtr de SQLPutData en SQL_NULL_DATA para especificar un valor de datos SQL NULL. (El StrLen_or_IndPtr argumento corresponde al campo SQL_DESC_OCTET_LENGTH_PTR del APD). La aplicación establece estos valores en SQL_NTS para especificar que el valor de *ParameterValuePtr en SQLBindParameter o *DataPtr en SQLPutData (al que apunta el campo SQL_DESC_DATA_PTR del APD) es una cadena terminada en null.

Los términos siguientes se usan en las tablas:

  • Longitud de bytes de los datos : número de bytes de datos SQL disponibles para enviar al origen de datos, tanto si los datos se truncarán antes de enviarlos al origen de datos. En el caso de los datos de cadena, esto no incluye espacio para el carácter de terminación null.

  • Longitud de bytes de columna: número de bytes necesarios para almacenar los datos en el origen de datos.

  • Longitud de bytes de caracteres: número máximo de bytes necesarios para mostrar datos en formato de caracteres. Esto se define para cada tipo de datos SQL en Tamaño de presentación, excepto la longitud de bytes de caracteres en bytes, mientras que el tamaño de presentación está en caracteres.

  • Número de dígitos : número de caracteres usados para representar un número, incluido el signo menos, el separador decimal y el exponente (si es necesario).

  • Palabras en
    cursiva: elementos de la gramática SQL. Para obtener la sintaxis de los elementos de gramática, vea Apéndice C: Gramática SQL.

Esta sección contiene los temas siguientes.