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 — Retourne le nombre de colonnes dans un résultat Oracle
Description
int oci_num_fields
( resource
$statement
)
Retourne le nombre de colonnes dans le résultat Oracle
statement.
Liste de paramètres
-
statement -
Un identifiant de requête OCI valide.
Valeurs de retour
Retourne le nombre de colonnes, sous la forme d'un entier, ou
FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec 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);
?>
Notes
Note:
Dans les versions de PHP antérieures à la version 5.0.0, vous devez utiliser la fonction ocinumcols(). Cet ancien nom est toujours utilisable : un alias a été fait vers la fonction oci_num_fields(), pour assurer la compatibilité ascendante. Toutefois, il est recommandé de ne plus l'utiliser.
jnield at impole dot com ¶
13 years ago
