14 septiembre 2010

Creación y uso de una sesión con Oracle



- Instalación del cliente:

1) Sobre la instalación del cliente Oracle en Mac OS X, consulte la nota técnica Cliente Oracle
 

2) Crearemos los parámetros necesarios en el archivo "tnsnames.ora" a fin de que el cliente Orcale pueda conectarse con la base de datos (en nuestro ejemplo la llamaremos "BASEORA"

- Creación de la biblioteca:

1) Crearemos una nueva biblioteca Omnis, a la que llamaremos "Sesión"


2) Añadiremos una clase "schema" en correspondencia con una tabla existente en nuestra base de datos Orcale (para nuestro ejemplo será "BDIREC"


3) Añadiremos una clase "table" (en nuestro ejemplo la llamaremos "Tabla") y asignaremos en su propiedad "sqlclassname" el esquema "BDIREC"

En "Starup_Task" crearemos las siguientes variables:

4) La variable Task, "taSesion" de tipo "Object" y con subtipo "ORACLE8SESS" y las variables Class, "clEsquema" y "clTabla" de tipo "List", a ésta última le añadiremos el "subtype" "Tabla".
 

- Conexión simple:

Añadiremos (bajo el método $construct, del "Starup_Task")


5) Do taSesion.$logon('BASEORA','usuario','contraseña','nombresesión')


- Si deseamos usar un "pool" de conexiones:

5) Do $extobjects.ORACLE8DAM.$objects.ORACLE8SESS.$makepool('Sesiones',10,'BASEORA','usuario',contraseña')

Cada vez que deseemos obtener una nueva conexión de entre las 10 disponibles usaremos:

6) Do clEsquemaPrueba.$sessionobject.$assign($sessionpools.Sesiones.$new())

- Uso de una clase esquema (schema)

6/7) Do clEsquema.$sessionobject.$assign(taSesion)
7/8) Do clEsquema.$select()
8/9) Do clEsquema.$fetch(kFetchAll)


- Uso de una clase tabla (table)

6/7) Do clTabla.$sessionobject.$assign(taSesion)
7/8) Calculate $clib.$tables.Tabla.$sqlclassname as 'BDIREC'
8/9) Do clTabla.$carga
9/10) Do clTabla.$sort(clTabla.NOMBREC)

En este último caso el método "$carga" es el encargado de leer la tabla y guardar su contenido en la lista "clTabla", tal y como sigue:

El método "$carga", se creará en la clase "Tabla", con el siguiente contenido:


1) Do $cinst.$select()
2) Do $cinst.$fetch(kFetchAll)