PHP 8.5.0 Alpha 1 available for testing

oci_fetch_object

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_objectLee una línea de un resultado en forma de objeto

Descripción

oci_fetch_object(resource $statement, int $mode = OCI_ASSOC | OCI_RETURN_NULLS): stdClass|false

Devuelve un objeto que contiene la siguiente línea de resultado de una consulta. Cada atributo de este objeto corresponde a una columna de la línea. Esta función se utiliza típicamente en un ciclo mientras no devuelva false, lo que indica que no hay más líneas disponibles.

Para más detalles sobre cómo la extensión OCI8 realiza la correspondencia entre tipos de datos, véasen los tipos de datos admitidos por el controlador

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.

Valores devueltos

Devuelve un objeto. Cada atributo de este objeto corresponde a una columna de la línea. Si no hay más líneas disponibles en la consulta statement entonces se devuelve false.

Todas las columnas LOB son devueltas en forma de descriptores LOB.

Las columnas DATE son devueltas en forma de strings formateados con el formato de fecha actual. El formato por omisión puede ser cambiado mediante las variables de entorno Oracle, como NLS_LANG o ejecutando el comando ALTER SESSION SET NLS_DATE_FORMAT.

Los nombres de columnas que no son sensibles a la casse (por omisión en Oracle), tendrán nombres de atributos en mayúsculas. Los nombres de columnas que son sensibles a la casse, tendrán nombres de atributos utilizando exactamente la misma casse de la columna. Utilice la función var_dump() sobre el objeto de resultado para verificar la casse apropiada para el acceso a los atributos.

Los valores de atributo serán null para cada campo de datos NULL.

Ejemplos

Ejemplo #1 Ejemplo con oci_fetch_object()

<?php

/*
Antes de la ejecución, cree la tabla:
CREATE TABLE mytab (id NUMBER, description VARCHAR2(30));
INSERT INTO mytab (id, description) values (1, 'Fish and Chips');
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 id, description FROM mytab');
oci_execute($stid);

while ((
$row = oci_fetch_object($stid)) != false) {
// Utilice nombres de atributos sensibles a la casse para cada columna estándar de Oracle
echo $row->ID . "<br>\n";
echo
$row->DESCRIPTION . "<br>\n";
}

// Muestra:
// 1
// Fish and Chips

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

?>

Ejemplo #2 Ejemplo con oci_fetch_object() con nombres de columna sensibles a la casse

<?php

/*
Antes de la ejecución, cree la tabla con una columna cuyo nombre es sensible a la casse:
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 id, "MyDescription" FROM mytab');
oci_execute($stid);

while ((
$row = oci_fetch_object($stid)) != false) {
// Utilice nombres de atributos en mayúsculas para cada columna estándar de Oracle
echo $row->ID . "<br>\n";
// Utilice la casse exacta para los nombres de columnas sensibles a la casse
echo $row->MyDescription . "<br>\n";
}

// Muestra:
// 1
// Iced Coffee

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

?>

Ejemplo #3 Ejemplo con oci_fetch_object() con LOBs

<?php

/*
Antes de la ejecución, cree la tabla:
CREATE TABLE mytab (id NUMBER, description CLOB);
INSERT INTO mytab (id, description) values (1, 'A very long string');
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 id, description FROM mytab');
oci_execute($stid);

while ((
$row = oci_fetch_object($stid)) != false) {
echo
$row->ID . "<br>\n";
// Lo siguiente mostrará los 11 primeros bytes desde DESCRIPTION
echo $row->DESCRIPTION->read(11) . "<br>\n";
}

// Muestra:
// 1
// A very long

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

?>

Ver también

  • oci_fetch() - Lee la siguiente línea de un resultado Oracle en un buffer interno
  • oci_fetch_all() - Lee múltiples líneas de un resultado en un array multidimensional
  • oci_fetch_assoc() - Lee una línea de un resultado en forma de array asociativo
  • oci_fetch_array() - Lee una línea de un resultado en forma de array asociativo o numérico
  • oci_fetch_row() - Lee la siguiente línea de una consulta en forma de array numérico

add a note

User Contributed Notes 1 note

up
1
juanloman at hilfetech dot com
13 years ago
Please note that you can still reference a column that has a very complex name by using the curly syntax as shown in this example:

<?php

$queryStr
= 'SELECT COUNT(*) FROM FOOBAR'; //Complex name!
// parse and exec...
$queryObj = oci_fetch_object($quertStmt);

echo
'Count: ' . $queryObj->{'COUNT(*)'}; //Curly syntax reference

?>
To Top