Funciones de Oracle

XCVIII. Funciones de Oracle

Introducci贸n

Estas funciones le permiten acceder a bases de datos Oracle 10, Oracle 9, Oracle 8 y Oracle 7 usando la Interfaz de Llamados Oracle (OCI por sus siglas en Ingl茅s). Ellas soportan la vinculaci贸n de variables PHP a recipientes Oracle, tienen soporte completo LOB, FILE y ROWID, y le permiten usar variables de definici贸n entregadas por el usuario.

Requisitos

Es necesario contar con las bibliotecas de cliente Oracle para usar esta extensi贸n. Los usuarios de Windows necesitar谩n bibliotecas con una versi贸n de al menos 10 para usar php_oci8.dll.

La forma m谩s conveniente de instalar todos los archivos requeridos es usar el Cliente Instant谩neo de Oracle, que est谩 disponible en: http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html. Para trabajar con el m贸dulo OCI8, la versi贸n "b谩sica" del Cliente Instant谩neo de Oracle es suficiente. El Cliente Instant谩neo no necesita que est茅n definidas las variables de entorno ORACLE_SID o ORACLE_HOME. Sin embargo, puede que aun necesite definir LD_LIBRARY_PATH y NLS_LANG.

Antes de usar esta extensi贸n, aseg煤rese de haber configurado apropiadamente sus variables de entorno Oracle para que correspondan con el usuario de Oracle, as铆 como su usuario del demonio web. Estas variables deben ser configuradas antes de iniciar su servidor web. Las variables que necesita definir son las siguientes:

  • ORACLE_HOME

  • ORACLE_SID

  • LD_PRELOAD

  • LD_LIBRARY_PATH

  • NLS_LANG

Para m谩s informaci贸n sobre variables de entorno de Oracle usadas con menos frecuencia como TNS_ADMIN, TWO_TASK, ORA_TZFILE, y los varios par谩metros de globalizaci贸n de Oracle como ORA_NLS33, ORA_NLS10 y las variables NLS_* refi茅rase a la documentaci贸n de Oracle.

Despu茅s de definir las variables de entorno para su usuario de servidor web, aseg煤rese tambi茅n de agregar al usuario del servidor web (nobody, www) al grupo oracle.

Si su servidor web no arranca, o falla al arrancar: Verifique que Apache est茅 enlazado con la biblioteca pthread:

# ldd /www/apache/bin/httpd
    libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
    libm.so.6 => /lib/libm.so.6 (0x4002f000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
    libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
    libc.so.6 => /lib/libc.so.6 (0x4007e000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Si libpthread no se encuentra en la lista, necesita re-instalar Apache:

# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install

Por favor note que en algunos sistemas, como UnixWare, se trata de libthread en lugar de libpthread. PHP y Apache deben configurarse con EXTRA_LIBS=-lthread.

Configuraci贸n en tiempo de ejecuci贸n

El comportamiento de estas funciones est谩 afectado por los valores definidos en php.ini.

Tabla 1. OCI8 Configuration Options

NameDefaultChangeableChangelog
oci8.privileged_connect"0"PHP_INI_SYSTEMAvailable since PHP 5.1.2.
oci8.max_persistent"-1"PHP_INI_SYSTEMAvailable since PHP 5.1.2.
oci8.persistent_timeout"-1"PHP_INI_SYSTEMAvailable since PHP 5.1.2.
oci8.ping_interval"60"PHP_INI_SYSTEMAvailable since PHP 5.1.2.
oci8.statement_cache_size"20"PHP_INI_SYSTEMAvailable since PHP 5.1.2.
oci8.default_prefetch"10"PHP_INI_SYSTEMAvailable since PHP 5.1.2.
oci8.old_oci_close_semantics"0"PHP_INI_SYSTEMAvailable since PHP 5.1.2.

A continuaci贸n se presenta una corta explicaci贸n de las directivas de configuraci贸n.

oci8.privileged_connect boolean

This option enables privileged connections using external credentials (OCI_SYSOPER, OCI_SYSDBA).

oci8.max_persistent int

The maximum number of persistent OCI8 connections per process. Setting this option to -1 means that there is no limit.

oci8.persistent_timeout int

The maximum length of time (in seconds) that a given process is allowed to maintain an idle persistent connection. Setting this option to -1 means that idle persistent connections will be maintained forever.

oci8.ping_interval int

The length of time (in seconds) that must pass before issuing a ping during oci_pconnect(). When set to 0, persistent connections will be pinged every time they are reused. To disable pings completely, set this option to -1.

Nota: Disabling pings will cause oci_pconnect() calls to operate at the highest efficiency, but may cause PHP to not detect faulty connections, such as those caused by network partitions, or if the Oracle server has gone down since PHP connected, until later in the script. Consult the oci_pconnect() documentation for more information.

oci8.statement_cache_size int

This option enables statement caching, and specifies how many statements to cache. To disable statement caching just set this option to 0.

Nota: A larger cache can result in improved performance, at the cost of increased memory usage.

oci8.default_prefetch int

This option enables statement prefetching and sets the default number of rows that will be fetched automatically after statement execution.

Nota: A larger prefetch can result in improved performance, at the cost of increased memory usage.

oci8.old_oci_close_semantics boolean

This option controls oci_close() behaviour. Enabling it means that oci_close() will do nothing; the connection will not be closed until the end of the script. This is for backward compatibility only. If you find that you need to enable this setting, you are strongly encouraged to remove the oci_close() calls from your application instead of enabling this option.

Constantes predefinidas

Estas constantes est谩n definidas por esta extensi贸n y estar谩n disponibles solamente cuando la extensi贸n ha sido o bien compilada dentro de PHP o grabada din谩micamente en tiempo de ejecuci贸n.

OCI_DEFAULT (integer)

Statement execution mode. Statement is not committed automatically when using this mode.

OCI_DESCRIBE_ONLY (integer)

Statement execution mode. Use this mode if you don't want to execute the query, but get the select-list's description.

OCI_COMMIT_ON_SUCCESS (integer)

Statement execution mode. Statement is automatically committed after oci_execute() call.

OCI_EXACT_FETCH (integer)

Statement fetch mode. Used when the application knows in advance exactly how many rows it will be fetching. This mode turns prefetching off for Oracle release 8 or later mode. Cursor is cancelled after the desired rows are fetched and may result in reduced server-side resource usage.

OCI_SYSDATE (integer)

OCI_B_BFILE (integer)

Used with oci_bind_by_name() when binding BFILEs.

OCI_B_CFILEE (integer)

Used with oci_bind_by_name() when binding CFILEs.

OCI_B_CLOB (integer)

Used with oci_bind_by_name() when binding CLOBs.

OCI_B_BLOB (integer)

Used with oci_bind_by_name() when binding BLOBs.

OCI_B_ROWID (integer)

Used with oci_bind_by_name() when binding ROWIDs.

OCI_B_CURSOR (integer)

Used with oci_bind_by_name() when binding cursors, previously allocated with oci_new_descriptor().

OCI_B_NTY (integer)

Used with oci_bind_by_name() when binding named data types. Note: in PHP < 5.0 it was called OCI_B_SQLT_NTY.

OCI_B_BIN (integer)

SQLT_BFILEE (integer)

The same as OCI_B_BFILE.

SQLT_CFILEE (integer)

The same as OCI_B_CFILEE.

SQLT_CLOB (integer)

The same as OCI_B_CLOB.

SQLT_BLOB (integer)

The same as OCI_B_BLOB.

SQLT_RDD (integer)

The same as OCI_B_ROWID.

SQLT_NTY (integer)

The same as OCI_B_NTY.

OCI_FETCHSTATEMENT_BY_COLUMN (integer)

Default mode of oci_fetch_all().

OCI_FETCHSTATEMENT_BY_ROW (integer)

Alternative mode of oci_fetch_all().

OCI_ASSOC (integer)

Used with oci_fetch_all() and oci_fetch_array() to get an associative array as a result.

OCI_NUM (integer)

Used with oci_fetch_all() and oci_fetch_array() to get an enumerated array as a result.

OCI_BOTH (integer)

Used with oci_fetch_all() and oci_fetch_array() to get an array with both associative and number indices.

OCI_RETURN_NULLS (integer)

Used with oci_fetch_array() to get empty array elements if field's value is NULL.

OCI_RETURN_LOBS (integer)

Used with oci_fetch_array() to get value of LOB instead of the descriptor.

OCI_DTYPE_FILE (integer)

This flag tells oci_new_descriptor() to initialize new FILE descriptor.

OCI_DTYPE_LOB (integer)

This flag tells oci_new_descriptor() to initialize new LOB descriptor.

OCI_DTYPE_ROWID (integer)

This flag tells oci_new_descriptor() to initialize new ROWID descriptor.

OCI_D_FILE (integer)

The same as OCI_DTYPE_FILE.

OCI_D_LOB (integer)

The same as OCI_DTYPE_LOB.

OCI_D_ROWID (integer)

The same as OCI_DTYPE_ROWID.

OCI_SYSOPER (integer)

Used with oci_connect() to connect as SYSOPER using external credentials (oci8.privileged_connect should be enabled for this).

OCI_SYSDBA (integer)

Used with oci_connect() to connect as SYSDBA using external credentials (oci8.privileged_connect should be enabled for this).

OCI_LOB_BUFFER_FREE (integer)

Used with OCI-Lob->flush to free buffers used.

OCI_TEMP_CLOB (integer)

Used with OCI-Lob->writeTemporary to indicate explicilty that temporary CLOB should be created.

OCI_TEMP_BLOB (integer)

Used with OCI-Lob->writeTemporary to indicate explicilty that temporary BLOB should be created.

Ejemplos

Ejemplo 1. Consulta b谩sica

<?php

  $conexion
= oci_connect('hr', 'hr', 'orcl');
  if (!
$conexion) {
    
$e = oci_error();
    print
htmlentities($e['message']);
    exit;
  }

  
$consulta = 'SELECT * FROM DEPARTMENTS';

  
$id_sentencia = oci_parse($conexion, $consulta);
  if (!
$id_sentencia) {
    
$e = oci_error($conexion);
    print
htmlentities($e['message']);
    exit;
  }

  
$r = oci_execute($id_sentencia, OCI_DEFAULT);
  if (!
$r) {
    
$e = oci_error($id_sentencia);
    echo
htmlentities($e['message']);
    exit;
  }

  print
'<table border="1">';
  while (
$fila = oci_fetch_array($id_sentencia, OCI_RETURN_NULLS)) {
    print
'<tr>';
       foreach (
$fila as $item) {
         print
'<td>'.($item?htmlentities($item):'&nbsp;').'</td>';
       }
       print
'</tr>';
  }
  print
'</table>';

  
oci_close($conexion);
?>

Ejemplo 2. Insertar con variables enlazadas

<?php

  
// Antes de ejecutar, cree la tabla:
  //   CREATE TABLE MITABLA (mid NUMBER, myd VARCHAR2(20));

  
$conexion = oci_connect('scott', 'tiger', 'orcl');

  
$consulta = 'INSERT INTO MITABLA VALUES(:myid, :mydata)';

  
$id_sentencia = oci_parse($conexion, $consulta);

  
$id = 60;
  
$datos = 'Algun dato';

  
oci_bind_by_name($id_sentencia, ':myid', $id);
  
oci_bind_by_name($id_sentencia, ':mydata', $datos);

  
$r = oci_execute($id_sentencia);

  if (
$r)
    print
"Una fila insertada";

  
oci_close($conexion);

?>

Ejemplo 3. Inserci贸n de datos en una columna CLOB

<?php

// Antes de ejecutar, cree la table:
//     CREATE TABLE mitabla (miclave NUMBER, miclob CLOB);

$conexion = oci_connect('scott', 'tiger', 'orcl');

$mi_clave = 12343;  // clave arbitraria para este ejemplo;

$sql = "INSERT INTO mitabla (miclave, miclob)
        VALUES (:miclave, EMPTY_CLOB())
        RETURNING miclob INTO :miclob"
;

$id_sentencia = oci_parse($conexion, $sql);
$clob = oci_new_descriptor($conexion, OCI_D_LOB);
oci_bind_by_name($id_sentencia, ":miclave", $mi_clave, 5);
oci_bind_by_name($id_sentencia, ":miclob", $clob, -1, OCI_B_CLOB);
oci_execute($id_sentencia, OCI_DEFAULT);
$clob->save("Una cadena muy larga");

oci_commit($conexion);

// Recuperacion de datos CLOB

$consulta = 'SELECT miclob FROM mitabla WHERE miclave = :miclave';

$id_sentencia = oci_parse ($conexion, $consulta);
oci_bind_by_name($id_sentencia, ":miclave", $mi_clave, 5);
oci_execute($id_sentencia, OCI_DEFAULT);

print
'<table border="1">';
while (
$fila = oci_fetch_array($id_sentencia, OCI_ASSOC)) {
  
$resultado = $fila['MYCLOB']->load();
  print
'<tr><td>'.$resultado.'</td></tr>';
}
print
'</table>';

?>

Es posible acceder f谩cilmente a procedimientos almacenados en la misma forma en que lo har铆a desde la l铆nea de comandos.

Ejemplo 4. Uso de Procedimientos Almacenados

<?php
// por webmaster arroba remoterealty punto com
$sth = oci_parse($dbh, "begin proc_nueva_dir( :id_direccion, '$nombre',
'$apellido', '$companyia', '$dir1', '$dir2', '$ciudad', '$estado',
'$cod_postal', '$pais', :cod_error );end;"
);

// Esto llama al procedimiento almacenado proc_nueva_dir, en donde
// :id_direccion es una variable de entrada/salida y :cod_error es una
// variable de salida.
// Entonces crea la vinculacion:

   
oci_bind_by_name($sth, ":id_direccion", $id_direccion, 10);
   
oci_bind_by_name($sth, ":cod_error", $cod_error, 10);
   
oci_execute($sth);

?>

Manejo de Conexiones

La extensi贸n oci8 le ofrece 3 funciones diferentes para conectarse con Oracle. Depende de usted usar la funci贸n m谩s apropiada para su aplicaci贸n, y la informaci贸n en esta secci贸n tiene la intenci贸n de ayudarle a realizar una selecci贸n informada.

Conectarse a un servidor Oracle es una operaci贸n razonablemente costosa, en t茅rminos del tiempo que toma en ser completada. La funci贸n oci_pconnect() usa un cach茅 persistente de conexiones que puede ser re-usado a trav茅s de peticiones de diferentes scripts. Esto quiere decir que usualmente s贸lo se incurrir谩 en el costo de conexi贸n una vez por proceso php (o hijo de apache).

Si su aplicaci贸n se conecta a Oracle usando un conjunto de credenciales diferente para cada usuario web, el cach茅 persistente usado por oci_pconnect() ser谩 menos 煤til a medida que el n煤mero de usuarios concurrentes se incrementa, al punto en que puede empezar a afectar adversamente el rendimiento general de su servidor Oracle debido al mantenimiento de demasiadas conexiones en reposo. Si su aplicaci贸n est谩 estructurada de este modo, es recomendable que configure su aplicaci贸n usando los parm谩metros oci8.max_persistent y oci8.persistent_timeout (estos le dar谩n control sobre el tama帽o y tiempo de vida del cach茅 de conexiones persistentes) o use oci_connect() en su lugar.

Tanto oci_connect() como oci_pconnect() emplean un cach茅 de conexiones; si realiza m煤ltiples llamadas a oci_connect() en un script dado, usando los mismo par谩metros, la segunda llamada y dem谩s despu茅s de 茅sta devolver谩n el gestor de conexi贸n existente. El cach茅 usado por oci_connect() es limpiado al final de la ejecuci贸n del script, o cuando se cierra el gestor de conexi贸n expl铆citamente. oci_pconnect() tiene un comportamiento similar, aunque su cach茅 es mantenido por separado y sobrevive entre m煤ltiples peticiones.

Es importante recordar esta caracter铆stica del uso de cach茅s, ya que da la apariencia de que dos gestores no est谩n aislados transaccionalmente (en realidad son el mismo gestor de conexi贸n, as铆 que no hay separaci贸n de ning煤n tipo). Si su aplicaci贸n necesita dos conexiones separadas, aisladas transaccionalmente, deber铆a usar oci_new_connect().

oci_new_connect() siempre crea una nueva conexi贸n al servidor Oracle, independientemente de cualquier otra conexi贸n que pueda existir. Las aplicaciones con alto tr谩fico web deber铆an tratar de evitar el uso de oci_new_connect(), especialmente en las secciones m谩s ocupadas de la aplicaci贸n.

Tipos de datos soportados por el controlador

Tabla 2. El controlador soporta los siguientes tipos cuando enlaza par谩metros con la funci贸n oci_bind_by_name():

TipoAsociaci贸n
SQLT_NTYAsigna un tipo nativo de colecci贸n desde un objeto colecci贸n PHP, tal como aquellos creados por oci_new_collection().
SQLT_BFILEEAsigna un descriptor nativo, tal como aquellos creados por oci_new_descriptor().
SQLT_CFILEEAsigna un descriptor nativo, tal como aquellos creados por oci_new_descriptor().
SQLT_CLOBAsigna un descriptor nativo, tal como aquellos creados por oci_new_descriptor().
SQLT_BLOBAsigna un descriptor nativo, tal como aquellos creados por oci_new_descriptor().
SQLT_RDDAsigna un descriptor nativo, tal como aquellos creados por oci_new_descriptor().
SQLT_NUMConvierte el par谩metro PHP a un tipo largo 'C', y lo enlaza a ese valor.
SQLT_RSETAsigna un gestor de sentencia nativo, tal como aquellos creados por oci_parse() o aquellos recuperados desde otras consultas OCI.
SQLT_CHR y cualquier otro tipoConvierte el par谩metro PHP a un tipo cadena y lo enlaza como una cadena.

Tabla 3. Los siguientes tipos son soportados cuando se recuperan columnas desde un conjunto de resultados:

TipoAsociaci贸n
SQLT_RSETCrea un recurso de sentencia oci para representar el cursor.
SQLT_RDDCrea un objeto ROWID.
SQLT_BLOBCrea un objeto LOB.
SQLT_CLOBCrea un objeto LOB.
SQLT_BFILECrea un objeto LOB.
SQLT_LNGEnlazado como SQLT_CHR, devuelto como una cadena
SQLT_LBIEnlazado como SQLT_BIN, devuelto como una cadena
Any other typeEnlazado como SQLT_BIN, devuelto como una cadena
Tabla de contenidos
OCI-Collection->append -- Appends element to the collection
OCI-Collection->assign -- Assigns a value to the collection from another existing collection
OCI-Collection->assignElem -- Assigns a value to the element of the collection
OCI-Collection->free -- Frees the resources associated with the collection object
OCI-Collection->getElem -- Returns value of the element
OCI-Collection->max -- Returns the maximum number of elements in the collection
OCI-Collection->size -- Returns size of the collection
OCI-Collection->trim -- Trims elements from the end of the collection
OCI-Lob->append -- Appends data from the large object to another large object
OCI-Lob->close -- Closes LOB descriptor
OCI-Lob->eof -- Tests for end-of-file on a large object's descriptor
OCI-Lob->erase -- Erases a specified portion of the internal LOB data
OCI-Lob->export -- Exports LOB's contents to a file
OCI-Lob->flush -- Flushes/writes buffer of the LOB to the server
OCI-Lob->free -- Frees resources associated with the LOB descriptor
OCI-Lob->getBuffering -- Returns current state of buffering for the large object
OCI-Lob->import -- Imports file data to the LOB
OCI-Lob->load -- Returns large object's contents
OCI-Lob->read -- Reads part of the large object
OCI-Lob->rewind -- Moves the internal pointer to the beginning of the large object
OCI-Lob->save -- Saves data to the large object
OCI-Lob->saveFile -- Alias of oci_lob_import()
OCI-Lob->seek -- Sets the internal pointer of the large object
OCI-Lob->setBuffering -- Changes current state of buffering for the large object
OCI-Lob->size -- Returns size of large object
OCI-Lob->tell -- Returns current position of internal pointer of large object
OCI-Lob->truncate -- Truncates large object
OCI-Lob->write -- Writes data to the large object
OCI-Lob->writeTemporary -- Writes temporary large object
OCI-Lob->writeToFile -- Alias of oci_lob_export()
oci_bind_by_name --  Binds the PHP variable to the Oracle placeholder
oci_cancel -- Cancels reading from cursor
oci_close -- Closes Oracle connection
oci_commit -- Commits outstanding statements
oci_connect -- Establishes a connection to the Oracle server
oci_define_by_name --  Uses a PHP variable for the define-step during a SELECT
oci_error -- Returns the last error found
oci_execute -- Executes a statement
oci_fetch_all -- Fetches all rows of result data into an array
oci_fetch_array -- Returns the next row from the result data as an associative or numeric array, or both
oci_fetch_assoc -- Returns the next row from the result data as an associative array
oci_fetch_object -- Returns the next row from the result data as an object
oci_fetch_row -- Returns the next row from the result data as a numeric array
oci_fetch -- Fetches the next row into result-buffer
oci_field_is_null -- Checks if the field is NULL
oci_field_name -- Returns the name of a field from the statement
oci_field_precision -- Tell the precision of a field
oci_field_scale -- Tell the scale of the field
oci_field_size -- Returns field's size
oci_field_type_raw -- Tell the raw Oracle data type of the field
oci_field_type -- Returns field's data type
oci_free_statement --  Frees all resources associated with statement or cursor
oci_internal_debug -- Enables or disables internal debug output
oci_lob_copy -- Copies large object
oci_lob_is_equal -- Compares two LOB/FILE locators for equality
oci_new_collection -- Allocates new collection object
oci_new_connect -- Establishes a new connection to the Oracle server
oci_new_cursor -- Allocates and returns a new cursor (statement handle)
oci_new_descriptor -- Initializes a new empty LOB or FILE descriptor
oci_num_fields --  Returns the number of result columns in a statement
oci_num_rows -- Returns number of rows affected during statement execution
oci_parse -- Prepares Oracle statement for execution
oci_password_change -- Changes password of Oracle's user
oci_pconnect -- Connect to an Oracle database using a persistent connection
oci_result -- Returns field's value from the fetched row
oci_rollback -- Rolls back outstanding transaction
oci_server_version -- Returns server version
oci_set_prefetch -- Sets number of rows to be prefetched
oci_statement_type -- Returns the type of an OCI statement
OCIBindByName -- Enlaza una variable PHP a un Placeholder de Oracle
ocicancel -- Alias of oci_cancel()
ocicloselob -- Alias of OCI-Lob->close
ocicollappend -- Alias of OCI-Collection->append
ocicollassign -- Alias of OCI-Collection->assign
ocicollassignelem -- Alias of OCI-Collection->assignElem
ocicollgetelem -- Alias of OCI-Collection->getElem
ocicollmax -- Alias of OCI-Collection->max
ocicollsize -- Alias of OCI-Collection->size
ocicolltrim -- Alias of OCI-Collection->trim
OCIColumnIsNULL -- comprueba si una una columna es NULL
OCIColumnName -- Devuelve el nombre de una columna.
ocicolumnprecision -- Alias of oci_field_precision()
ocicolumnscale -- Alias of oci_field_scale()
OCIColumnSize -- devuelve el tama帽o de la columna
OCIColumnType -- Devuelve el tipo de dato de una columna.
ocicolumntyperaw -- Alias of oci_field_type_raw()
OCICommit -- Confirma transacciones pendientes
OCIDefineByName --  Usa una variable de PHP para el define-step durante una sentencia SELECT
OCIError -- Devuelve el 煤ltimo error de stmt|conn|global. Si no ocurre ning煤n error devuelve falso.
OCIExecute -- Ejecuta una sentencia
OCIFetch -- Busca la siguiente fila en el result-buffer
OCIFetchInto -- Busca la siguiente fila dentro del result-array
OCIFetchStatement -- Busca todas la filas de un resultset dentro de un array.
ocifreecollection -- Alias of OCI-Collection->free
OCIFreeCursor -- Libera todos los recursos asociados con cursor.
ocifreedesc -- Alias of OCI-Lob->free
OCIFreeStatement -- Libera todos los recursos asociados con una sentencia.
OCIInternalDebug --  Habilita o deshabilita la salida del depurador interno. Por defecto este est谩 deshabiltado
ociloadlob -- Alias of OCI-Lob->load
OCILogOff -- Termina la conexion con Oracle
ocilogon -- Alias of oci_connect()
ocinewcollection -- Alias of oci_new_collection()
OCINewCursor -- devuelve un cursor nuevo (Statement-Handle) - use esto para enlazar ref-cursors!
OCINewDescriptor -- Inicializa un nuevo descriptor vac铆o LOB/FILE (LOB por defecto)
ocinlogon -- Alias of oci_new_connect()
OCINumCols -- Devuelve el n煤mero de columnas resultantes en una sentencia
OCIParse -- Analiza una consulta y devuelve una sentencia
ociplogon -- Alias of oci_pconnect()
OCIResult -- Devuelve el valor de una columna en la fila buscada
OCIRollback -- Restablece todas las transaciones sin confirmar
OCIRowCount -- Obtiene el n煤mero de filas afectadas
ocisavelob -- Alias of OCI-Lob->save
ocisavelobfile -- Alias of OCI-Lob->import
OCIServerVersion -- Devuelve una cadena conteniendo informaci贸n a cerca de la version del servidor.
ocisetprefetch -- Alias of oci_set_prefetch()
OCIStatementType -- Devuelve el tipo de una sentencia OCI.
ociwritelobtofile -- Alias of OCI-Lob->export
ociwritetemporarylob -- Alias of OCI-Lob->writeTemporary