oci_fetch_object

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

oci_fetch_objectRetorna a próxima linha de uma consulta como um objeto

Descrição

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

Retorna um objeto contendo a próxima linha do conjunto de resultados de uma consulta. Cada atributo do objeto corresponde a uma coluna da linha. Esta função normalmente é chamada em um laço até retornar false, indicando que não existem mais linhas.

Para obter detalhes sobre o mapeamento dos tipos de dados realizado pela extensão OCI8, consulte os tipos de dados suportados pelo driver.

Parâmetros

statement

Um identificador de declaração OCI8 válida criada por oci_parse() e executada por oci_execute() ou um identificador de declaração REF CURSOR.

Valor Retornado

Retorna um objeto. Cada atributo do objeto corresponde a uma coluna da linha. Se não houver mais linhas em statement, então false será retornado.

Quaisquer colunas LOB são retornadas como descritores LOB.

As colunas DATE são retornadas como strings no formato de data atual. O formato padrão pode ser alterado com variáveis ​​de ambiente Oracle, como NLS_LANG ou por um comando ALTER SESSION SET NLS_DATE_FORMAT executado anteriormente.

Os nomes de colunas padrão do Oracle, que não diferenciam maiúsculas de minúsculas, terão nomes de atributos em letras maiúsculas. Os nomes de colunas que diferenciam maiúsculas de minúsculas terão nomes de atributos usando a mesma capitalização de coluna. Use var_dump() no objeto de resultado para verificar a capitalização apropriada para acesso ao atributo.

Os valores dos atributos serão null para quaisquer campos de dados NULL.

Exemplos

Exemplo #1 Exemplo de oci_fetch_object()

<?php

/*
Antes de executar, crie a tabela:
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) {
// Use nomes de atributos em letras maiúsculas para cada coluna padrão do Oracle
echo $row->ID . "<br>\n";
echo
$row->DESCRIPTION . "<br>\n";
}

// O resultado é:
// 1
// Fish and Chips

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

?>

Exemplo #2 oci_fetch_object() com nomes de colunas que diferenciam maiúsculas de minúsculas

<?php

/*
Antes de executar, crie a tabela com um nome de coluna que diferencie maiúsculas de 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 id, "MyDescription" FROM mytab');
oci_execute($stid);

while ((
$row = oci_fetch_object($stid)) != false) {
// Use nomes de atributos em letras maiúsculas para cada coluna padrão do Oracle
echo $row->ID . "<br>\n";
// Use a capitalização exata para o nome da coluna que diferencia maiúsculas de minúsculas
echo $row->MyDescription . "<br>\n";
}

// Resultado:
// 1
// Iced Coffee

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

?>

Exemplo #3 oci_fetch_object() com LOBs

<?php

/*
Antes de executar, crie a tabela:
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";
// O código a seguir produzirá os primeiros 11 bytes de DESCRIPTION
echo $row->DESCRIPTION->read(11) . "<br>\n";
}

// O resultado é:
// 1
// A very long

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

?>

Veja Também

  • oci_fetch() - Busca a próxima linha de uma consulta em buffers internos
  • oci_fetch_all() - Busca várias linhas de uma consulta em um array bidimensional
  • oci_fetch_assoc() - Retorna a próxima linha de uma consulta como um array associativo
  • oci_fetch_array() - Retorna a próxima linha de uma consulta como um array associativo ou numérico
  • oci_fetch_row() - Retorna a próxima linha de uma consulta como um array numérico

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
1
juanloman at hilfetech dot com
12 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