(PHP 5, PECL oci8:1.1-1.2.4)
oci_new_cursor — Alloue un nouveau curseur Oracle
Alloue un nouveau curseur Oracle sur la connexion spécifiée.
Un identifiant de connexion Oracle, retourné par la fonction oci_connect() ou la fonction oci_pconnect() .
Retourne un nouveau gestionnaire de connexion, ou FALSE si une erreur survient.
Exemple 1815. Utiliser un REF CURSOR issu d'une procédure enregistrée
<?php
// supposons que votre procédure stockée info.output retourne un curseur de référence dans :data
$conn
=
oci_connect
(
"scott"
,
"tiger"
);
$curs
=
oci_new_cursor
(
$conn
);
$stmt
=
oci_parse
(
$conn
,
"begin info.output(:data); end;"
);
oci_bind_by_name
(
$stmt
,
"data"
,
$curs
, -
1
,
OCI_B_CURSOR
);
oci_execute
(
$stmt
);
oci_execute
(
$curs
);
while (
$data
=
oci_fetch_row
(
$curs
)) {
var_dump
(
$data
);
}
oci_free_statement
(
$stmt
);
oci_free_statement
(
$curs
);
oci_close
(
$conn
);
?>
Exemple 1816. Utiliser un REF CURSOR issu d'une commande SELECT
<?php
echo
"<html><body>"
;
$conn
=
oci_connect
(
"scott"
,
"tiger"
);
$count_cursor
=
"CURSOR(select count(empno) num_emps from emp "
.
"where emp.deptno = dept.deptno) as EMPCNT from dept"
;
$stmt
=
oci_parse
(
$conn
,
"select deptno,dname,$count_cursor"
);
oci_execute
(
$stmt
);
echo
"<table border=\"1\">"
;
echo
"<tr>"
;
echo
"<th>DEPT NAME</th>"
;
echo
"<th>DEPT #</th>"
;
echo
"<th># EMPLOYEES</th>"
;
echo
"</tr>"
;
while (
$data
=
oci_fetch_assoc
(
$stmt
)) {
echo
"<tr>"
;
$dname
=
$data
[
"DNAME"
];
$deptno
=
$data
[
"DEPTNO"
];
echo
"<td>$dname</td>"
;
echo
"<td>$deptno</td>"
;
oci_execute
(
$data
[
"EMPCNT"
]);
while (
$subdata
=
oci_fetch_assoc
(
$data
[
"EMPCNT"
])) {
$num_emps
=
$subdata
[
"NUM_EMPS"
];
echo
"<td>$num_emps</td>"
;
}
echo
"</tr>"
;
}
echo
"</table>"
;
echo
"</body></html>"
;
oci_free_statement
(
$stmt
);
oci_close
(
$conn
);
?>
Note: Dans les versions de PHP antérieures à la version 5.0.0, vous devez utiliser la fonction ocinewcursor() . Cet ancien nom est toujours utilisable : un alias a été fait vers la fonction oci_new_collection() , pour assurer la compatibilité ascendante. Toutefois, il est recommandé de ne plus l'utiliser.