Novedades

Esta versión del controlador Microsoft ODBC para Oracle incluye mejoras de rendimiento y estabilidad. Encontrará funcionalidad agregada debido a las siguiente mejoras:

•	Control de la configuración mejorado mediante las mejoras al Administrador de orígenes de datos ODBC, incluyendo las opciones de Conversión, Rendimiento y Personalización para reforzar el día de la semana estándar. Para obtener más detalles, consulte Agregar y modificar orígenes de datos mediante Instalar y Atributos de la cadena de conexión.

•	Archivo de Ayuda extendida.


Introducción

El controlador Microsoft® ODBC para Oracle le permite conectar una aplicación compatible con ODBC con una base de datos de Oracle. Esta versión agrega características adicionales de funcionamiento y control, entre las que se incluye el acceso a paquetes PL/SQL, integración XA/DTC y acceso a Oracle desde Internet Information Server (IIS). El controlador ODBC cumple la especificación Open Database Connectivity (ODBC, Conectividad abierta de bases de datos) descrita en ODBC Programmer's Reference (Version 2.0) de su plataforma.

Este archivo de Ayuda describe cómo instalar, configurar y utilizar el controlador ODBC e incluye las siguientes secciones:

•	Requisitos del sistema

•	Agregar y modificar orígenes de datos mediante Instalar

•	Configurar el controlador ODBC de Oracle

•	Conectar a un origen de datos

•	Niveles de conformidad con ODBC

•	Asignar tipos de datos

•	Utilizar Microsoft Internet Information Server

•	Utilizar la autenticación del sistema operativo

•	Limitaciones en el uso de cursores controlados por conjuntos de claves

•	Devolver parámetros de matrices desde procedimientos almacenados

•	Tabla de opciones de conexión

•	Tabla de opciones de instrucciones

•	Tabla de tipos de cursor y combinaciones de concurrencia

•	Mensajes de error

•	Funciones de la API

•	Notas sobre el subprocesamiento en funciones de la API

•	Notas sobre las funciones de la API

•	Funciones de la API de nivel Base

•	Funciones de la API de nivel 1

•	Funciones de la API de nivel 2


Requisitos del sistema

Para utilizar el controlador Microsoft ODBC para Oracle, debe haber instalado Windows 95 o Windows NT y el software de cliente de Oracle, versión 7.3 o posterior en su sistema Windows. El controlador Microsoft ODBC para Oracle sólo acepta SQL*Net 2.3 o posterior. Para obtener más información acerca de los productos de Oracle, consulte la documentación de Oracle.


Agregar y modificar orígenes de datos mediante Instalar

Un origen de datos identifica una ruta a los datos que puede incluir una biblioteca de red, un servidor, una base de datos y otros atributos; en este caso, el origen de datos es la ruta de acceso a una base de datos de Oracle. Para poder conectar a un origen de datos, el Administrador de controladores busca en el registro de Windows información específica de la conexión.

El Administrador de controladores ODBC y los controladores ODBC utilizan la entrada del registro creada por el Administrador de orígenes de datos ODBC. Esta entrada contiene información acerca de cada origen de datos y el controlador que tiene asociado. Antes de poder conectar a un origen de datos, se debe agregar al registro su información de conexión.

Para agregar y configurar orígenes de datos, abra el Administrador de ODBC mediante la opción ODBC de 32 bits del Panel de control de Windows. Así, el Administrador de ODBC actualiza la información de conexiones a orígenes de datos. Según vaya agregando orígenes de datos, el Administrador de ODBC actualizará automáticamente la información del registro.

Para agregar un origen de datos de Windows

1	Para iniciar el Administrador de ODBC, haga doble clic en el icono ODBC del Panel de control de Windows.

2	Cuando vea el cuadro de diálogo Administrador de orígenes de datos ODBC, haga clic en el botón Agregar. Aparecerá el cuadro de diálogo Crear nuevo origen de datos.

3	Seleccione el Controlador ODBC y, después, haga clic en Finalizar. Aparecerá el cuadro de diálogo Instalación de Microsoft ODBC para Oracle.

4	En el cuadro Nombre del origen de datos, escriba el nombre del origen de datos al que desea obtener acceso. Puede elegir el nombre que desee.

5	En el cuadro Descripción, escriba la descripción del controlador. Se trata de un campo opcional que describe el controlador de base de datos al que se conecta el origen de datos. Puede elegir el nombre que desee.

6	En el cuadro Nombre de usuario, escriba su nombre de usuario de base de datos. El nombre de usuario es su identificador de usuario de base de datos.

7	En el cuadro Servidor, escriba la cadena de conexión para el motor de servidor Oracle. La cadena de conexión identifica el motor de servidor Oracle al que desea obtener acceso.

8	Haga clic en Aceptar para agregar este origen de datos.

Nota   Aparecerá el cuadro de diálogo Orígenes de datos y el Administrador de ODBC actualizará la información del registro. El nombre de usuario y la cadena de conexión especificados se convertirán en los valores predeterminados de conexión para este origen de datos. Es decir, cuando conecte con el origen de datos mediante un cuadro de diálogo o una cadena de conexión, estos valores se convertirán en las entradas predeterminadas para la conexión con el origen de datos.

9	Puede hacer clic en Opciones para crear más especificaciones acerca de la instalación de ODBC para Oracle.

Conversión

Haga clic en el botón Seleccionar para elegir un convertidor de datos de carga. El valor predeterminado es Ningún Convertidor.

Rendimiento

Incluir REMARKS en funciones de catálogo especifica si el controlador devuelve columnas Remarks en el conjunto de resultados de SQLColumns. El controlador ODBC proporciona un acceso más rápido cuando no se establece este valor.

Incluir SYNONYMS en SQLColumns especifica si el controlador devuelve la información de la columna.

Personalización

Mantener el estándar DayOfWeek de ODBC especifica si el conjunto de resultados complirá el formato del día de la semana específico de ODBC (domingo=1; sábado=7).

10	Haga clic en Agregar para agregar otro origen de datos o haga clic en Cerrar para salir.

Para modificar un origen de datos de Windows

1	Inicie el Administrador de ODBC. Aparecerá el cuadro de diálogo Orígenes de datos.

2	En el cuadro de diálogo Orígenes de datos, seleccione el origen de datos de Oracle que desee modificar y, después, haga clic en Configurar. Aparecerá el cuadro de diálogo Instalación de Microsoft ODBC para Oracle.

3	Modifique los campos necesarios del origen de datos y, después, haga clic en Aceptar.

Cuando haya terminado de modificar la información en este cuadro de diálogo, el Administrador de ODBC actualizará la información del registro.


Configurar el controlador ODBC de Oracle

Puede controlar el rendimiento del controlador ODBC si conoce el entorno de datos y configura correctamente los parámetros de la conexión al origen de datos a través del cuadro de diálogo Administrador de orígenes de datos ODBC o de los parámetros de la cadena de conexión. El cuadro de diálogo proporciona los controles siguientes para conectar a un origen de datos mediante el cuadro de diálogo o las cadenas de conexión:

•	Ficha DSN de usuario   Muestra la lista de nombres de orígenes de datos locales del equipo.

•	Ficha DNS de sistema   Muestra un cuadro de diálogo que le permite agregar o quitar un origen de datos de sistema. Todos los usuarios de la máquina local pueden obtener acceso a los orígenes de datos de sistema.

•	Ficha DSN de archivo   Muestra un cuadro de diálogo que le permite agregar o quitar un origen de datos de archivo de la máquina local. Todos los usuarios que hayan instalado el mismo controlador pueden compartir los orígenes de datos de archivo.

•	Ficha Controladores ODBC   Muestra una lista con los controladores ODBC instalados.

•	Ficha Seguimiento   Muestra un cuadro de diálogo que le permite especificar cómo realizará el Administrador de controladores ODBC el seguimiento de las llamadas a las funciones de ODBC. Puede configurar que se realice el seguimiento por separado para cada aplicación ODBC instalada.

•	Ficha Acerca de   Muestra un cuadro de diálogo que enumera los archivos de componentes de ODBC instalados.

Una vez que haya agregado un origen de datos, podrá utilizar el cuadro de diálogo Administrador de orígenes de datos ODBC para configurar el acceso al origen de datos. Seleccione un origen de datos y, después, haga clic en una de las fichas siguientes para modificar o consultar la información.

El límite predeterminado (50) sobre el número de controles de la instrucción lo establece el servidor.


Conectar a un origen de datos

Una aplicación de ODBC puede pasar información de conexión de varias formas. Por ejemplo, la aplicación puede hacer que el controlador pregunte siempre al usuario la información de conexión o puede esperar una cadena de conexión que especifique la conexión al origen de datos. La forma en que se conecte a un origen de datos dependerá del método de conexión que utilice su aplicación de ODBC.

Una forma común de conectar a un origen de datos es mediante el cuadro de diálogo Origen de datos. Si la aplicación de ODBC está configurada para utilizar un cuadro de diálogo, se mostrará dicho cuadro de diálogo y le pedirá la información apropiada para conectar al origen de datos.

Otra forma consiste en utilizar los atributos de la cadena de conexión.

Para conectar a un origen de datos mediante un cuadro de diálogo

1	Cuando vea el cuadro de diálogo Origen de datos, seleccione un origen de datos de Oracle y, después, haga clic en Aceptar. Aparecerá el cuadro de diálogo Conectar.

2	Escriba la información apropiada en el cuadro de diálogo Conectar y, después, haga clic en Aceptar.

Una vez comprobada la información de conexión, la aplicación puede tener acceso a la información que contiene el origen de datos mediante el controlador de ODBC.


Atributos de la cadena de conexión

Algunas aplicaciones pueden requerir una cadena de conexión que especifique la información de conexión al origen de datos en vez de utilizar un cuadro de diálogo para obtener dicha información. La cadena de conexión está compuesta por varios atributos que especifican la forma en que el controlador se conecta a un origen de datos. Un atributo identifica una parte específica de la información que el controlador necesita saber antes de realizar una conexión correcta al origen de datos. Cada controlador puede tener un conjunto diferente de atributos, pero el formato de la cadena de conexión es siempre el mismo. La cadena de conexión tiene el formato siguiente:

"DSN=nombre_del_origen_de_datos[;SERVER=valor] [;PWD=valor] [;UID=valor] [;<Atributo>=<valor>]"

Nota   La versión del controlador Microsoft ODBC para Oracle acepta el formato de cadena de conexión de la versión 1, que es ligeramente diferente.

Debe especificar el nombre_del_origen_de_datos si no especifica los atributos UID, PWD, SERVER (o CONNECTSTRING) y DRIVER. Sin embargo, los demás atributos son opcionales. Si no especifica un atributo, se utilizará el atributo predeterminado que especificó en la ficha DSN del Administrador de orígenes de datos ODBC. El valor del atributo puede distinguir entre mayúsculas y minúsculas.

Los atributos de la cadena de conexión son los siguientes:

Atributo	Descripción	Valor predeterminado
DSN	Nombre del origen de datos. Este nombre se muestra en la ficha Controladores ODBC del Administrador de orígenes de datos ODBC.	“”
PWD	Contraseña del servidor Oracle al que desea obtener acceso.	“”
SERVER	Cadena de conexión del servidor Oracle al que desea obtener acceso.	“”
UID	Nombre de usuario del servidor Oracle. Dependiendo del sistema, este atributo puede no ser opcional; es decir, determinadas bases de datos y tablas pueden requerir este atributo por motivos de seguridad. Utilice "/" para usar la autenticación del sistema operativo Oracle.	“”
BUFFERSIZE	Tamaño óptimo de búfer utilizado al buscar columnas. El controlador optimiza la búsqueda de forma que una búsqueda en el servidor Oracle devuelve suficientes filas para llenar un búfer de este tamaño.  Los valores mayores tienden a aumentar el rendimiento, si está buscando muchos datos.	65535
SYNONYMCOLUMNS	Cuando este valor es verdadero (1), la llamada a la API SQLColumn( ) devuelve la información de columnas. De lo contrario, SQLColumn( ) sólo devuelve columnas de tablas y vistas. El controlador ODBC proporciona un acceso más rápido cuando no se establece este valor.	1
REMARKS	Cuando este valor es verdadero (1), el controlador devuelve columnas Remarks en el conjunto de resultados de SQLColumns. El controlador ODBC proporciona un acceso más rápido cuando no se establece este valor.	0
StdDayOfWeek	Exige el estándar de ODBC para la función escalar DAYOFWEEK; el valor predeterminado es activado, pero aquellos usuarios que necesiten la versión traducida pueden cambiar el comportamiento para utilizar cualquier valor devuelto por Oracle.	1
Por ejemplo, la cadena de conexión que conecta al origen de datos Empleados mediante el servidor Oracle mickey.world como usuario de Oracle cindy, podría ser:

"DSN=Empleados;UID=cindy;PWD=secret;SERVER=mickey.world"

Otro ejemplo: la cadena de conexión que conecta al origen de datos Nóminas utilizando la autenticación de sistema operativo y el servidor Oracle datos1, podría ser:

"DSN=Nóminas;UID=/;PWD=;SERVER=datos1"


Niveles de conformidad con ODBC

ODBC define dos tipos de estándares de conformidad para los controladores: el estándar de conformidad con API y el estándar de conformidad gramatical con SQL. La conformidad con API se refiere a las funciones que acepta un controlador. La conformidad con SQL se refiere a la gramática de SQL que acepta el controlador. Cada estándar de conformidad está compuesto de niveles.

Nivel de conformidad con API

El controlador ODBC acepta las Funciones de la API de nivel 1 y las Funciones de la API de nivel Base. El controlador también acepta las siguientes Funciones de la API de nivel 2:

•	SQLBrowseConnect( )

•	SQLDataSources( )

•	SQLDescribeParam( )

•	SQLExtendedFetch( )

•	SQLForeignKeys( )

•	SQLMoreResults( )

•	SQLNativeSql( )

•	SQLNumParams( )

•	SQLPrimaryKeys( )

•	SQLProcedureColumns( )

•	SQLProcedures( )

•	SQLSetPos( )

•	SQLSetScrollOptions( )

Opciones compatibles

El controlador acepta las siguientes opciones para las funciones de nivel 1 SQLGetConnectOption( ) y SQLSetConnectOption( ):

•	SQL_ACCESS_MODE (sólo en SQLGetConnectOption( ))

•	SQL_AUTOCOMMIT

•	SQL_ODBC_CURSORS

•	SQL_OPT_TRACEFILE

•	SQL_OPT_TRACE

•	SQL_TRANSLATE_DLL

•	SQL_TRANSLATE_OPTION

•	SQL_TXN_ISOLATION

El controlador acepta las siguientes opciones para las funciones de nivel 1 SQLGetStmtOption( ) y SQLSetStmtOption( ):

•	SQL_BIND_TYPE

•	SQL_CONCURRENCY

•	SQL_CURSOR_TYPE

•	SQL_KEYSET_SIZE

•	SQL_MAX_ROW

•	SQL_ROWSET_SIZE


Niveles de conformidad con SQL

El controlador ODBC acepta el nivel de gramática Mínimo y Base de SQL, así como las siguientes extensiones ODBC de SQL:

•	Fecha, hora y datos de marca de hora

•	Combinaciones externas por la derecha y por la izquierda

•	Funciones numéricas:

abs	log	round	tan
ceiling	log10	second	truncate
cos	mod	sign
exp	pi	sin
floor	power	sqrt
•	Funciones de fecha:

curdate	dayofweek	monthname	second
curtime	dayofyear	minute	week
dayname	hour	now	year
dayofmonth	month	quarter
•	Funciones de cadena:

ascii	left	right	ucase
char	length	rtrim
concat	ltrim	soundex
lcase	replace	substring
•	Funciones de conversión de tipos:

convert
•	Las siguientes funciones del sistema:

ifnull	user


Asignar tipos de datos

El servidor Oracle acepta un conjunto de tipos de datos. El controlador ODBC asigna estos tipos de datos a los tipos de datos adecuados de SQL de ODBC. La tabla siguiente muestra los tipos de datos del servidor Oracle 7.3 y los tipos de datos correspondientes en SQL de ODBC.

Tipo de dato de servidor Oracle	Tipo de dato de SQL de ODBC
CHAR	SQL_CHAR
DATE	SQL_TIMESTAMP
FLOAT	SQL_DOUBLE
INTEGER	SQL_DECIMAL
LONG	SQL_LONGVARCHAR
LONG RAW	SQL_LONGVARBINARY
NUMBER	SQL_DECIMAL
RAW	SQL_VARBINARY
VARCHAR2	SQL_VARCHAR
Nota   Los tipos de datos de SQL de ODBC no aceptan el tipo de dato MLSLABEL de Oracle. Los valores escalares son devueltos en el formato de la página de códigos local.


Utilizar Microsoft Transaction Server

Puede habilitar una base de datos de Oracle para que funcione con componentes transaccionales de Microsoft Transaction Server (MTS) en Windows NT y Windows 95. Para habilitar una base de datos de Oracle de manera que funcione con componentes de MTS que aceptan transacciones, los administradores del sistema deben crear una vista llamada V$XATRANS$. Para crear esta secuencia de comandos, debe ejecutar una secuencia de comandos suministrada por Oracle. Para obtener más información, vea la Ayuda de Microsoft Transaction Server o consulte la documentación de Oracle.


Utilizar Microsoft Internet Information Server

Si tiene dificultades para conectar desde una secuencia de comandos (el error ORA-12641 en particular) de Internet Information Server (IIS), agregue la línea siguiente al archivo SQLNET.ORA.

SQLNET.AUTHENTICATION_SERVICES = (none)

Así desactivará los Servicios de seguridad de red para que pueda funcionar la autenticación anónima.


Utilizar la autenticación del sistema operativo

La autenticación de sistema operativo de Oracle depende del sistema operativo subyacente para controlar el acceso a las cuentas de bases de datos. Los usuarios no necesitan escribir una contraseña cuando utilizan este tipo de acceso.

Para aprovechar esta característica, especifique "/" como identificador de usuario y no especifique una contraseña cuando se conecte mediante las funciones de conexión de la API, SQLBrowseConnect, SQLConnect y SQLDriverConnect.


Limitaciones en el uso de cursores controlados por conjuntos de claves

Debe poder recuperar una única columna ROWID para la tabla consultada. No se puede utilizar un cursor controlado por conjuntos de claves en combinaciones, consultas o instrucciones que contengan las cláusulas DISTINCT, GROUP BY, UNION, INTERSECT o MINUS.


Devolver parámetros de matrices desde procedimientos almacenados

En Oracle 7.3 no hay ninguna forma de tener acceso al tipo de registro PL/SQL excepto desde un programa PL/SQL. Si un procedimiento o una función empaquetados contiene un argumento formal definido como tipo de registro PL/SQL, no se puede enlazar dicho argumento formal como parámetro. Utilice el tipo PL/SQL TABLE del controlador Microsoft Oracle ODBC para llamar a parámetros de matrices desde procedimientos que contengan las secuencias de escape correctas.

Para llamar al procedimiento utilice la sintaxis siguiente

{call  <nombre_paquete>.<proc-o-func>;
(..., {resultset <máx_registros_solicitados> ,<parám_1_formal_matriz>,;
 <parám_2_formal_matriz>,...,<parám_n_formal_matriz> }, ... ) }

Nota

•	El parámetro <máx_registros_solicitados> debe ser mayor o igual que el número de filas del conjunto de resultados. De lo contrario, Oracle devolverá un error que le llega a través del controlador.

•	No puede utilizar registros PL/SQL como parámetros de matriz. Cada parámetro de matriz sólo puede representar una columna de una tabla de base de datos.

El ejemplo siguiente define un paquete que contiene dos procedimientos que devuelven diferentes conjuntos de resultados y, después, proporciona dos formas para devolver conjuntos de resultados desde el paquete:

Definición del paquete:

CREATE OR REPLACE PACKAGE SimplePackage AS

TYPE t_id is TABLE of  NUMBER(5)

    INDEX BY BINARY_INTEGER;

TYPE t_Course is TABLE of VARCHAR2(10)

    INDEX BY BINARY_INTEGER;

TYPE t_Dept is TABLE of VARCHAR2(5)

    INDEX BY BINARY_INTEGER;

PROCEDURE proc1

 ( 	o_id 	OUT 	t_id,

    	ao_course 	OUT 	t_Course,

ao_dept	        OUT 	t_Dept

 );

TYPE t_pk1Type1 IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;

TYPE t_pk1Type2 IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

PROCEDURE proc2

(

i_Arg1	IN 	NUMBER,

ao_Arg2	OUT	t_pk1Type1,

ao_Arg3	OUT	t_pk1Type2

);

END SimplePackage;

CREATE OR REPLACE PACKAGE BODY SimplePackage AS

    PROCEDURE  proc1 ( o_id OUT t_id,

    ao_course OUT t_Course, ao_dept OUT t_Dept   ) AS

    BEGIN

  o_id(1):= 200;

          ao_course(1) :=  'M101';

          ao_dept(1) :=  'EEE' ;

          o_id(2) := 201;

          ao_course(2) :=  'PHY320';

          ao_dept(2) :=  'ECE' ;

     END proc1;

PROCEDURE proc2

(

i_Arg1	IN 	NUMBER,

ao_Arg2	OUT	t_pk1Type1,

ao_Arg3	OUT	t_pk1Type2

)

AS

i	NUMBER;

BEGIN

FOR i IN 1 .. i_Arg1 LOOP

ao_Arg2(i) := 'Row Number ' || to_char(i);

END LOOP;

FOR i IN 1 .. i_Arg1 LOOP

ao_Arg3(i) := i;

END LOOP;

END proc2;

END SimplePackage;

Para llamar al procedimiento, PROC1

1	Devolver todas las columnas en un único conjunto de resultados:

{ call SimplePackage.Proc1( {resultset  3, o_id , ao_course, ao_dept  } ) }

2	Devolver cada columna como un único conjunto de resultados:

{call SimplePackage.Proc1( {resultset 3, o_id},  {resultset 3, ao_course}, {resultset 3, ao_dept} ) }

Esto devuelve tres conjuntos de resultados, uno por cada columna.

 Para llamar al procedimiento, PROC2

1	Devolver todas las columnas en un único conjunto de resultados:

{call SimplePackage.Proc2( 5 , {resultset  5, ao_Arg2, ao_Arg3} ) }

2	Devolver cada columna como un único conjunto de resultados:

{call SimplePackage.Proc2( 5 , {resultset 5, ao_Arg2}, {resultset 5, ao_Arg3} ) }

Compruebe que todas las aplicaciones consultan todos los conjuntos de resultados mediante la función de la API SQLMoreResults. Para obtener más información, consulte la documentación de Microsoft ODBC SDK.

Nota   En la versión 2.0 del controlador Microsoft ODBC para Oracle no puede utilizar las funciones de Oracle que devuelven matrices PL/SQL para devolver conjuntos de resultados.


Notas sobre las funciones de la API

El controlador Microsoft ODBC para Oracle acepta las funciones API Base, Nivel 1 y Nivel 2.  Estas funciones se enumeran en Niveles de conformidad con ODBC.

•	La conformidad de interfaz de nivel Base (CLI) proporciona características definidas en la especificación CLI de ISO y las características obligatorias definidas en la especificación CLI de X/Open.

•	La conformidad de nivel 1 proporciona la funcionalidad de interfaz Base, y también características adicionales como las transacciones.

•	La conformidad de nivel 2 proporciona la funcionalidad de Nivel 1, y también características adicionales como marcadores, parámetros dinámicos y ejecución asíncrona de las funciones de ODBC.


Notas sobre seguridad de subprocesos en funciones de la API

El controlador Microsoft ODBC para Oracle es seguro para subprocesos. Sin embargo, Oracle no permite múltiples instrucciones activas concurrentes en una única conexión. El controlador le impone esta restricción. Es decir, en aplicaciones de subprocesos múltiples, aunque cualquier subproceso puede realizar llamadas al controlador ODBC de Oracle en cualquier momento, el controlador bloquea todos los demás subprocesos del controlador de la misma conexión hasta que el subproceso original deja el controlador.

El controlador no bloquea si hay dos instrucciones en dos conexiones diferentes. Sin embargo, si hay una única conexión con dos instrucciones, puede haber bloqueos.


Funciones de la API de nivel Base

Las funciones de este nivel comprenden el nivel mínimo de conformidad de interfaz para controladores ODBC.

Función API	Notas
SQLAllocConnect	Asigna memoria para un controlador de conexión, hdbc, en el entorno identificado por henv. El Administrador de controladores procesa esta llamada y llama a la función SQLAllocConnect del controlador siempre que se llame a SQLConnect, SQLBrowseConnect o SQLDriverConnect.
SQLAllocEnv	Muestra un cuadro de diálogo que especifica los requisitos del software de cliente Oracle y devuelve SQL_NULL_HANDLE. Si el software de cliente Oracle no está instalado, la función asigna memoria para un controlador de entorno, henv, e inicializa la interfaz de nivel de llamada de ODBC para que la utilice una aplicación.
SQLAllocStmt	Asigna memoria para un controlador de instrucciones y asocia al controlador de instrucciones con la conexión especificada por hdbc. El Administrador de controladores pasa esta llamada al controlador, que asigna la memoria de la estructura hstmt.
SQLBindCol	Asigna espacio de almacenamiento para una columna de resultados y especifica el tipo de los resultados.
SQLCancel	Cancela el procesamiento de un controlador de instrucciones, hstmt. En algunos casos, Oracle no le permite cancelar una instrucción que se esté ejecutando. Esto significa que la instrucción seguirá ejecutándose hasta que Oracle complete el proceso y en ese momento el controlador ODBC cancelará los resultados de las instrucciones.
SQLColAttributes	Devuelve información del descriptor de una columna en un conjunto de resultados. Se devuelve la información del descriptor como una cadena de caracteres, un valor de 32 bits dependiente del descriptor o un valor entero.
SQLConnect	Conecta a un origen de datos. Para utilizar la autenticación de sistema operativo de Oracle, especifique "/" como parámetro szUID y "" como parámetro szAuthStr.
SQLDescribeCol	Devuelve el nombre, tipo, precisión, escala y posibilidad de anulación de la columna de resultados dada. Nota    SQLDescribeCol informa de las columnas calculadas como SQL_VARCHAR.
SQLDisconnect	Cierra una conexión. Si el conjunto de conexiones está activado para un entorno compartido y una aplicación llama a SQLDisconnect en una conexión de dicho entorno, se devuelve la conexión al conjunto de conexiones y queda todavía disponible para otros componentes que utilicen el mismo entorno compartido.
SQLError	Devuelve información de error o estado acerca del último error. El controlador mantiene una pila o lista de errores que se pueden devolver para los argumentos hstmt, hdbc y henv, dependiendo de cómo se realice la llamada a SQLError. La cola de errores se vacía después de cada instrucción. Normalmente, recupera un mensaje de error de Oracle y, de lo contrario, está vacía.
SQLExecDirect	Ejecuta una instrucción SQL nueva y preparable. El controlador utiliza los valores actuales de las variables de marcador del parámetro si la instrucción tiene parámetros. Si los nombres de tabla, vista o campo contienen espacios en blanco, escríbalos entre comillas. Por ejemplo, si su base de datos contiene una tabla llamada Mi tabla y el campo Mi campo, ponga cada elemento del identificador como se muestra a continuación: SELECT “Mi tabla”. “Mi campo1”,; “Mi tabla”.“Mi campo2” FROM “Mi tabla”
SQLExecute	Ejecuta una instrucción SQL preparada (instrucción ya preparada mediante SQLPrepare). El controlador utiliza los valores actuales de las variables de marcador del parámetro si la instrucción tiene parámetros.
SQLFetch	Recupera una fila de un conjunto de resultados en las ubicaciones especificadas por las anteriores llamadas a SQLBindCol. Prepara el controlador para llamar a SQLGetData para las columnas sin enlazar.
SQLFreeConnect	Libera el controlador de una conexión, así como toda la memoria asignada para el controlador.
SQLFreeEnv	Cierra el controlador ODBC y libera toda la memoria asociada al controlador.
SQLFreeStmt	Detiene los procesos asociados a un controlador hstmt específico, cierra los cursores abiertos asociados a hstmt, descarta los resultados pendientes y, opcionalmente, libera todos los recursos asociados al controlador de la instrucción.
SQLGetCursorName	Devuelve el nombre del cursor asociado al controlador hstmt dado.
SQLNumResultCols	Devuelve el número de columnas de un cursor de conjunto de resultados.
SQLPrepare	Prepara una instrucción SQL diseñando cómo optimizar y ejecutar la instrucción. La función SQLExecDirect compila la instrucción SQL para su ejecución. Si los nombres de tabla, vista o campo contienen espacios en blanco, escríbalos entre comillas ("). Por ejemplo, si su base de datos contiene una tabla llamada Mi tabla y el campo Mi campo, ponga cada elemento del identificador como se muestra a continuación: SELECT “Mi tabla”.“Mi campo” FROM “Mi tabla” Para obtener información acerca de cómo utilizar conjuntos de resultados que contienen matrices como parámetros formales, vea Devolver parámetros de matrices desde procedimientos almacenados.
SQLRowCount	Oracle no proporciona ninguna forma de determinar el número de filas de un conjunto de resultados hasta que haya consultado la última fila, por lo que devuelve -1.
SQLSetCursorName	Asocia un nombre de cursor a un controlador de instrucción activa, hstmt.
SQLSetParam	Reemplazada por SQLBindParameter en ODBC 2.x
SQLTransact	Solicita una operación de confirmar o deshacer para todas las operaciones activas de todos los controladores de instrucciones (hstmts) asociados a una conexión o para todas las conexiones asociadas al controlador de entorno, henv. Si una confirmación falla en modo manual, la transacción permanece activa; puede elegir deshacer la transacción o volver a intentar la operación de confirmación. Si la confirmación falla en modo automático, se deshace automáticamente la transacción; la transacción no puede estar inactiva.


Funciones de la API de nivel 1

Las funciones de este nivel proporcionan conformidad de interfaz Base, y también funcionalidad adicional como compatibilidad con transacciones.

Función API	Notas
SQLColumns	Crea un conjunto de resultados para una tabla que constituye la lista de columnas de la tabla o tablas especificadas. Cuando solicita columnas para un sinónimo PUBLIC, debe haber configurado el atributo de conexión SYNONYMCOLUMNS y especificar una cadena vacía como argumento szTableOwner. Al devolver columnas para sinónimos PUBLIC, el controlador establece la columna TABLE NAME como una cadena vacía. El conjunto de resultados contiene una columna adicional, ORDINAL POSITION, al final de cada fila. Este valor es la posición ordinal de la columna en la tabla.
SQLDriverConnect	Conecta a un origen de datos existente. Para obtener detalles, vea Atributos de la cadena de conexión.
SQLGetConnectOption	Devuelve la configuración actual de una opción de conexión. Esta función se acepta parcialmente: el controlador acepta todos los valores del argumento fOption, pero no acepta algunos valores vParam del argumento fOption SQL_TXN_ISOLATION. Para obtener más información, vea la Tabla de opciones de conexión.
SQLGetData	Recupera el valor de un campo del registro actual del conjunto de resultados dado.
SQLGetFunctions	Devuelve TRUE para todas las funciones compatibles. Implementada por el Administrador de controladores.
SQLGetInfo	Devuelve información, incluyendo SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT y SQLSMALLINT *, acerca del controlador ODBC y del origen de datos asociados con un controlador de conexión, hdbc.
SQLGetStmtOption	Devuelve la configuración actual de una opción de instrucciones. Para obtener más información, vea la Tabla de opciones de instrucciones.
SQLGetTypeInfo	Devuelve información acerca de los tipos de datos compatibles con un origen de datos. El controlador devuelve la información en un conjunto de resultados SQL.
SQLParamData	Se utiliza junto con SQLPutData para especificar los datos de parámetros en tiempo de ejecución de la instrucción.
SQLPutData	Permite que una aplicación envíe datos de un parámetro o una columna al controlador en tiempo de ejecución de la instrucción.
SQLSetConnectOption	Proporciona acceso a las opciones que rigen aspectos de la conexión. Esta función se acepta parcialmente: el controlador acepta todos los valores del argumento fOption, pero no acepta algunos valores vParam del argumento fOption SQL_TXN_ISOLATION. Para obtener más información, vea la Tabla de opciones de conexión.
SQLSetStmtOption	Establece las opciones relativas a un controlador de instrucción, hstmt. Para obtener más información, vea la Tabla de opciones de instrucciones.
SQLSpecialColumns	Recupera el conjunto óptimo de columnas que identifica de manera exclusiva a una fila de la tabla.
SQLStatistics	Recupera una lista de estadísticas acerca de una tabla y los índices, o nombres de etiquetas, asociados a la tabla. El controlador devuelve la información como un conjunto de resultados.
SQLTables	Devuelve la lista de nombres de tabla especificados por el parámetro de la instrucción SQLTables. Si no se especifica ningún parámetro, devuelve los nombres de las tablas almacenadas en el origen de datos actual. El controlador devuelve la información como un conjunto de resultados.  Las llamadas de tipo de enumeración no recibirán una entrada de conjunto de resultados en vistas remotas o vistas locales con parámetros.  Sin embargo, la llamada a SQLTables con un especificador de nombre de tabla único buscará una coincidencia para esa vista de existir una con ese nombre; esto permite utilizar la API para comprobar si hay conflictos de nombres antes de crear una tabla nueva. Los sinónimos PUBLIC se devuelven con un valor de TABLE_OWNER de "". Las vistas (VIEWS) que pertenecen a SYS o SYSTEM se identifican como SYSTEM VIEW.


Funciones de la API de nivel 2

Las funciones de este nivel proporcionan conformidad de interfaz de Nivel 1, así como la funcionalidad adicional de aceptar marcadores.

Función API	Notas
SQLBindParameter	Asocia un búfer a un marcador de parámetro en una instrucción SQL.
SQLBrowseConnect	Devuelve niveles sucesivos de atributos y valores de atributos.
SQLDataSources	Enumera nombres de orígenes de datos. Implementada por el Administrador de controladores
SQLDescribeParam	Devuelve la descripción de un marcador de parámetro asociado a una instrucción SQL preparada. Devuelve la mejor estimación de qué es el parámetro, basándose en un análisis de la instrucción. Si no se puede determinar el tipo del parámetro, se devuelve SQL_VARCHAR con longitud 2000.
SQLDrivers	Implementada por el Administrador de controladores.
SQLExtendedFetch	Similar a SQLFetch, excepto en que devuelve múltiples filas utilizando una matriz para cada columna. Se puede avanzar en el conjunto de resultados y se puede hacer que se desplace hacia atrás si se define el cursor como estático y no sólo como desplazable hacia delante. Para los cursores desplazables sólo hacia delante con enlace de columnas predeterminado, se consulta directamente en los búferes de datos las columnas de datos de los conjuntos de datos que son mayores que el atributo de conexión BUFFERSIZE. No se aceptan marcadores de longitud variable ni se pueden consultar conjuntos de filas que tengan un desplazamiento (distinto de 0) del marcador
SQLForeignKeys	Devuelve una lista de claves externas en una tabla o una lista de claves externas de otras tablas que hacen referencia a una tabla única.
SQLMoreResults	Determina si hay más resultados pendientes en un controlador de instrucciones , hstmt, que contenga instrucciones SELECT, UPDATE, INSERT o DELETE y, si es así, inicializa el procesamiento de los resultados.  Oracle acepta múltiples conjuntos de resultados sólo desde procedimientos almacenados cuando se utilizan secuencias de escape {resultset… }.
SQLNativeSql	Para obtener información acerca de su uso, vea Devolver parámetros de matrices desde procedimientos almacenados.
SQLNumParams	Devuelve el número de parámetros de una instrucción de SQL. El número de parámetros debe ser igual al número de signos de interrogación contenidos en la instrucción SQL pasada a SQLPrepare.
SQLPrimaryKeys	Devuelve los nombres de columnas que conforman la clave primaria de una tabla.
SQLProcedureColumns	Devuelve una lista de parámetros de entrada y de salida, el valor de devolución y las columnas del conjunto de resultados de un procedimiento, y dos columnas adicionales, OVERLOAD y ORDINAL_POSITION. OVERLOAD es la columna OVERLOAD de la tabla ALL_ARGUMENTS de la vista Diccionario de datos de Oracle. OVERLOAD_POSITION es la columna SEQUENCE de la tabla ALL_ARGUMENTS de la vista Diccionario de datos de Oracle. En los procedimientos empaquetados, la columna PROCEDURE NAME tiene el formato nombrePaquete.nombreProcedimiento.
SQLProcedures	Devuelve la lista de procedimientos del origen de datos. En los procedimientos empaquetados, la columna PROCEDURE NAME tiene el formato nombrePaquete.nombreProcedimiento. Puesto que Oracle no proporciona ninguna forma de distinguir los procedimientos empaquetados de las funciones empaquetadas, el controlador devuelve SQL_PT_UNKNOWN para la columna PROCEDURE_TYPE.
SQLSetPos	Establece la posición del cursor en un conjunto de filas. Puede utilizar SQLSetPos con SQLGetData para recuperar las filas de las columnas sin enlazar tras situar el cursor en una fila específica del conjunto de filas. Las filas agregadas al conjunto de resultados mediante fOption SQL_ADD se agregan tras la última fila del conjunto de resultados.
SQLSetScrollOptions	Establece las opciones que controlan el comportamiento de los cursores asociados al controlador de instrucciones, hstmt. Para obtener detalles, vea la Tabla de tipos de cursor y combinaciones de concurrencia compatibles.


Tabla de opciones de conexión

Estas opciones permiten personalizar la conexión de la base de datos dentro de una aplicación.

Opción de conexión	Notas
SQL_AUTOCOMMIT	Si elige SQL_AUTOCOMMIT_OFF, su aplicación debe confirmar o deshacer explícitamente las transacciones con SQLTransact.
SQL_ODBC_CURSORS	Este atributo de conexión está implementado en el Administrador de controladores.
SQL_OPT_TRACE	Este atributo de conexión está implementado en el Administrador de controladores.
SQL_OPT_TRACEFILE	Este atributo de conexión está implementado en el Administrador de controladores.
SQL_TRANSLATE_DLL	Devuelve el error: "El controlador no puede".
SQL_TRANSLATE_OPTION	Valor de 32 bits pasado a la DLL de conversión.
SQL_TXN_ISOLATION	El controlador sólo permite: SQL_TXN_READ_COMMITTED No se aceptan los vParams siguientes: SQL_TXN_READ_UNCOMMITTED SQL_TXN_REAPEATABLE_READ SQL_TXN_SERIALIZABLE
SQL_ATTR_ENLIST_IN_DTC	Este atributo de conexión de ODBC 3.0 le permite utilizar el controlador ODBC de Oracle en transacciones distribuidas coordinadas por Microsoft Transaction Server; proporciona el puntero de interfaz, pITransaction, a la transacción en el argumento vParam.
SQL_ATTR_CONNECTION_DEAD	Este atributo de conexión de ODBC 3.5 de sólo lectura le permite determinar si la conexión al servidor Oracle ha fallado. Es de sólo lectura, no se puede establecer.


Tabla de opciones de instrucciones

Estas opciones le permiten personalizar una instrucción específica de ejecución dentro de una aplicación.

Opciones de instrucciones	Notas
SQL_BIND_TYPE	No puede exceder 2.147.483.647 bytes o la memoria disponible.
SQL_CONCURRENCY	Para ver los valores permitidos, vea la Tabla de tipos de cursor y combinaciones de concurrencia compatibles.
SQL_CURSOR_TYPE	Este controlador no permite SQL_CURSOR_DYNAMIC. Vea SQLSetScrollOptions para obtener más información. Para ver los valores permitidos, vea la Tabla de tipos de cursor y combinaciones de concurrencia compatibles.
SQL_GET_BOOKMARK	Devuelve un valor entero de 32 bits que es el marcador del número de registro actual. Es de sólo lectura, no se puede establecer.
SQL_KEYSET_SIZE	Sólo se puede establecer a 0.
SQL_MAX_ROWS	Número máximo de filas que se van a devolver en un conjunto de resultados.
SQL_ROW_NUMBER	Devuelve un entero de 32 bits que especifica la posición de la fila actual dentro del conjunto de resultados. Es de sólo lectura, no se puede establecer.
SQL_ROWSET_SIZE	No puede exceder de 4.294.967.296 filas. Sin embargo, debe tener suficiente memoria virtual en el equipo para controlar las solicitudes que realice.
SQL_USE_BOOKMARKS	Permite establecer SQL_USE_BOOKMARKS a SQL_UB_ON y expone marcadores de longitud fija.


Tabla de tipos de cursor y combinaciones de concurrencia

Los tipos de cursor controlan la funcionalidad del cursor que se proporciona al usuario. Las opciones de concurrencia controlan el comportamiento de las actualizaciones y bloqueos de un conjunto de resultados.

Tipo de cursor	Concurrencia (valores permitidos)
SQL_CURSOR_FORWARD_ONLY	SQL_CONCUR_READ_ONLY
SQL_CURSOR_STATIC	SQL_CONCUR_READ_ONLY
SQL_CURSOR_KEYSET_DRIVEN*	SQL_CONCUR_READ_ONLY SQL_CONCUR_LOCK ** SQL_CONCUR_VALUES

Notas

* Vea Limitaciones en el uso de cursores controlados por conjuntos de claves.

** SQL_CONCUR_LOCK sólo se acepta cuando el tipo de conexión SQL_AUTOCOMMIT se establece como SQL_AUTOCOMMIT_OFF.


Mensajes de error

Cuando se produce un error, el controlador Microsoft ODBC para Oracle devuelve SQLSTATE (un código de error de ODBC) y un mensaje de error. El controlador deriva esta información de los errores detectados por el controlador y los que devuelve el servidor Oracle.

Mensajes devueltos por el controlador ODBC de Oracle

Si hay un mensaje de error de Oracle disponible, se devolverá precedido de las etiquetas [Microsoft], [controlador ODBC para Oracle] y [Oracle]; de lo contrario, se devolverá el mensaje sin la etiqueta [Oracle] como en los ejemplos siguientes:

Mensaje de error de Oracle:

[Microsoft][controlador ODBC para Oracle][Oracle]ORA-nnnnn texto-mensaje

Mensaje del controlador de ODBC de Oracle

[Microsoft][controlador ODBC para Oracle]