Bonjour,

J'ai une procédure qui me renvoie un SYS_REFCURSOR de 7000 enregistrements.
Depuis PHP j'ai un oci_fetch_array.
ça fonctionne mais ça n'affiche que 5250 enregistrements et je reçois :

Warning: oci_fetch_array(): ORA-03146: Invalid buffer length for TTC field
Si je comprends bien il y a un dépassement de la taille mémoire !

ORACLE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
procedure users_list (refcur OUT SYS_REFCURSOR) AS
 
    BEGIN
        OPEN refcur for
            select id, first_name , last_name , username from v_users            
            order by last_name;
    end users_list;
PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
$stid_users = oci_parse($ora_conn, "BEGIN db.web_pkg.users_list(:rc); END;");
$refcur_users  = oci_new_cursor($ora_conn);
oci_bind_by_name($stid_users , ':rc', $refcur_users , -1, OCI_B_CURSOR);
oci_execute($stid_users );
oci_execute($refcur_users );
 
 
while(($row_users = oci_fetch_array($refcur_users, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
 
		echo $row_users["ID"]."<br> ";					
 
}
Merci pour votre aide.