(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_fetch_object — Retorna a próxima linha de uma consulta como um objeto
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.
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
.
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
.
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);
?>