Funciones de OCI8
PHP Manual

oci_define_by_name

(PHP 5, PECL OCI8 >= 1.1.0)

oci_define_by_nameAsocia una variable de PHP con una columna para la obtención de consultas

Descripción

bool oci_define_by_name ( resource $statement , string $column_name , mixed &$variable [, int $type = SQLT_CHR ] )

Asocia una variable de PHP con una columna para la obtención de consultas usando oci_fetch().

La llamada a oci_define_by_name() debe ocurrir antes que la ejecución de oci_execute().

Parámetros

statement

Un identificador de sentencia de OCI8 válido creado por oci_parse() y ejecutado por oci_execute(), o un identificador de sentencia de REF CURSOR.

column_name

El nombre de la columna usada en la consulta.

Use los nombres de columnas predeterminados de Oracle, en mayúsculas e insensibles al uso de mayúsculas/minúsculas. Use los nombres de columna exactos para nombres de columnas sensibles al uso de mayúsculas/minúsculas.

variable

La variable de PHP que contendrá el valor de la columna devuelta.

type

El tipo de dato a devolver. Generalmente no es necesario. Observe que no se lleva a cabo la conversión de datos estilo Oracle. Por ejemplo, SQLT_INT será ignorado, y el tipo de dato devuelto continuará siendo SQLT_CHR.

Opcionalmente se puede usar oci_new_descriptor() para asignar descriptores LOB/ROWID/BFILE.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de oci_define_by_name()

<?php

$conn 
oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql 'SELECT location_id, city FROM locations WHERE location_id < 1200';
$stid oci_parse($conn$sql);

// Las definiciones DEBEN hacerse antes de la ejecución
oci_define_by_name($stid'LOCATION_ID'$locid);
oci_define_by_name($stid'CITY'$city);

oci_execute($stid);

// Cada obtención rellena las variables anteriormente definidas con los datos de la siguiente fila
while (oci_fetch($stid)) {
    echo 
"La ubicación del id $locid es $city<br>\n";
}

// Se muestra:
//   La ubicación del id 1000 es Roma
//   La ubicación del id 1100 es Venice

oci_free_statement($stid);
oci_close($conn);

?>

Ejemplo #2 oci_define_by_name() con nombres de columna sensibles al uso de mayúsculas/minúsculas

<?php

/*
  Antes de ejecutarlo, cree la tabla con un nombre de columna sensible al uso de mayúsculas/minúsculas
    CREATE TABLE mytab (id NUMBER, "MyDescription" VARCHAR2(30));
    INSERT INTO mytab (id, "MyDescription") values (1, 'Iced Coffee');
    COMMIT;
*/

$conn oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid oci_parse($conn'SELECT * FROM mytab');

// Use mayúsculas para nombres de columnas insensible al uso de mayúsculas/minúsculas
oci_define_by_name($stid'ID'$id);

// Use el nombre exacto para nombres de columnas sensible al uso de mayúsculas/minúsculas
oci_define_by_name($stid'MyDescription'$mydesc);

oci_execute($stid);

while (
oci_fetch($stid)) {
    echo 
"El id $id es $mydesc<br>\n";
}

// Se muestra:
//   El id 1 es Iced Coffee

oci_free_statement($stid);
oci_close($conn);

?>

Ejemplo #3 oci_define_by_name() con columnas de tipo LOB

<?php

/*
  Antes de ejecutarlo, cree la tabla:
    CREATE TABLE mytab (id NUMBER, fruit CLOB);
    INSERT INTO mytab (id, fruit) values (1, 'manzana');
    INSERT INTO mytab (id, fruit) values (2, 'naranaja');
    COMMIT;
*/

$conn oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid oci_parse($conn'SELECT * FROM mytab');

// Las definiciones DEBEN hacerse antes de la ejecución
oci_define_by_name($stid'ID'$id);
oci_define_by_name($stid'FRUIT'$fruta);  // $fruta será un descriptor LOB

oci_execute($stid);

while (
oci_fetch($stid)) {
    echo 
$id " es " $fruta->load(100) . "<br>\n";
}

// Se muestra:
//   1 es manzana
//   2 es naranaja

$fruta->free();
oci_free_statement($stid);
oci_close($conn);

?>

Ejemplo #4 oci_define_by_name() con un tipo explícito

<?php

/*
  Antes de ejecutarlo, cree la tabla:
    CREATE TABLE mytab (id NUMBER, fruit CLOB);
    INSERT INTO mytab (id, fruit) values (1, 'manzana');
    INSERT INTO mytab (id, fruit) values (2, 'naranaja');
    COMMIT;
*/

$conn oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid oci_parse($conn'SELECT * FROM mytab');

// Las definiciones DEBEN hacerse antes de la ejecución
oci_define_by_name($stid'ID'$id);

$fruta oci_new_descriptor($connOCI_D_LOB);
oci_define_by_name($stid'FRUIT'$frutaOCI_D_CLOB);

oci_execute($stid);

while (
oci_fetch($stid)) {
    echo 
$id " es " $fruta->load(100) . "<br>\n";
}

// Se muestra:
//   1 es manzana
//   2 es naranaja

$fruta->free();
oci_free_statement($stid);
oci_close($conn);

?>

Notas

Nota:

En versiones de PHP anteriores a la 5.0.0 use ocidefinebyname() en su lugar. El nombre antiguo de la función todavía puede ser utilizado en versiones actuales, sin embargo es obsoleto y no se recomienda.

Ver también


Funciones de OCI8
PHP Manual