oci_num_rows

(PHP 5, PECL OCI8 >= 1.1.0)

oci_num_rowsDevuelve el número de filas afectadas durante la ejecución de una sentencia

Descripción

int oci_num_rows ( resource $statement )

Obtiene el número de filas afectadas durante la ejecución de una sentencia.

Parámetros

statement

Un identificador de sentencia de OCI válido.

Valores devueltos

Devuelve el número de filas afectadas como un entero, o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de oci_num_rows()

<?php

$conn 
oci_connect("hr""hrpwd""localhost/XE");
if (!
$conn) {
    
$m oci_error();
    
trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$stid oci_parse($conn"create table emp2 as select * from employees");
oci_execute($stid);
echo 
oci_num_rows($stid) . " rows inserted.<br />\n";
oci_free_statement($stid);

$stid oci_parse($conn"delete from emp2");
oci_execute($stidOCI_DEFAULT);
echo 
oci_num_rows($stid) . " rows deleted.<br />\n";
oci_commit($conn);
oci_free_statement($stid);

$stid oci_parse($conn"drop table emp2");
oci_execute($stid);
oci_free_statement($stid);

oci_close($conn);

?>

Notas

Nota:

Esta función no devuelve el número de filas seleccionadas. Para sentencias SELECT, esta función devolverá el número de filas que fueron obtenidas desde el búfer con funciones de tipo oci_fetch*().

Nota:

En versiones de PHP anteriores a la 5.0.0 se debe usar ocirowcount() en su lugar. Este nombre aún puede usarse; se dejó como alias de oci_num_rows() por razones de retrocompatibilidad. Sin embargo, este nombre es obsoleto y no se recomienda.

add a note add a note

User Contributed Notes 3 notes

up
0
pluueer at hotmail dot com
4 years ago
If you want to return te number of rows without fetching all data it might by more efficient to use this code (correct me if I'm wrong):

$sql_query = 'SELECT COUNT(*) AS NUMBER_OF_ROWS FROM (' . $your_query . ')';

$stmt= oci_parse($conn, $sql_query);

oci_define_by_name($stmt, 'NUMBER_OF_ROWS', $number_of_rows);

oci_execute($stmt);

oci_fetch($stmt);

echo $number_of_rows;
up
0
justin at flakmag dot com
14 years ago
It appears the easiest workaround if you want to get numrows without moving to the end of the result set is to use:

numrows = OCIFetchStatement(...);
OCIExecute(...);

So that the execute re-executes the query. It's horribly inefficient to query twice, but it works.
up
0
batti at digito dot com
14 years ago
this function can be used with select statement, and also return affected number of rows.
But remember this, use this after fetch statement.
To Top