The following is not immediately obvious:
If you need the number of columns in a REF CURSOR returned from a PL/SQL procedure, you need to use OCINumColumns() on the cursor handle returned by OCINewCursor after it is bound and executed, not the statement handle. Same applies for OCIColumnName() and friends.
oci_num_fields
(PHP 5, PECL OCI8 >= 1.1.0)
oci_num_fields — Devuelve el número de columnas del resultado de una sentencia
Descripción
int oci_num_fields
( resource
$statement
)
Obtiene el número de columnas de la sentencia dada por statement.
Parámetros
-
statement -
Un identificador de sentencia de OCI válido.
Valores devueltos
Devuelve el número de columnas como un entero, o FALSE en caso de error.
Ejemplos
Ejemplo #1 Ejemplo de oci_num_fields()
<?php
$conn = oci_connect("scott", "tiger");
$stmt = oci_parse($conn, "select * from emp");
oci_execute($stmt);
while (oci_fetch($stmt)) {
echo "\n";
$ncols = oci_num_fields($stmt);
for ($i = 1; $i <= $ncols; $i++) {
$column_name = oci_field_name($stmt, $i);
$column_value = oci_result($stmt, $i);
echo $column_name . ': ' . $column_value . "\n";
}
echo "\n";
}
oci_free_statement($stmt);
oci_close($conn);
?>
Notas
Nota:
En versiones de PHP anteriores a la 5.0.0 se debe usar ocinumcols() en su lugar. Este nombre aún puede usarse; se dejó como alias de oci_num_fields() por razones de retrocompatibilidad. Sin embargo, este nombre es obsoleto y no se recomienda.
jnield at impole dot com ¶
13 years ago
