Pues sip!!
La solución en PL/SQL efectivamente implica el uso de un cursor... Cómo lo sabes? Lo intuías? O es que ya te has visto en la situación de tener que usarlo?
La otra la posteo a continuación, por si a alguien le puede servir. Una de las claves estaba en un contador de intervenciones que se declara 'global', pero que luego se asigna a una variable local a la función de forma que no se "macahca". En fin, lo dicho, hoy estoy contentísimoooooo!!!
(Ahí va la ya "famosa" función recursiva en PHP):
11 function PintarHijos($bd, $ID_Intervencion, $Titulo_Intervencion, $pref)
12 {
13 global $ID, $Tit, $cuenta_replicas;
14
15 $ID = $ID_Intervencion;
16 $Tit = $Titulo_Intervencion;
17
18 $sql1 = "begin SELECT COUNT(*) INTO :cuenta_replicas FROM REPLICA WHERE ID_Int_precede = :ID; end;";
19 ora_parse($bd, $sql1, 0);
20 ora_bind($bd, "cuenta_replicas", ":cuenta_replicas", 8);
21 ora_bind($bd, "ID", ":ID", 10, 1);
22 $cuenta_replicas = NULL;
23 ora_exec($bd);
24
25 $aux = $cuenta_replicas;
26 $sql2 = "SELECT ID_Int, Titulo_Intervencion FROM REPLICA WHERE (ID_Int_precede = :ID)";
27 ora_parse($bd, $sql2, 0);
28 ora_bind($bd, "ID", ":ID", 10, 1);
29 ora_exec($bd);
30 for ($i=1;$i<=$cuenta_replicas;++$i)
31 {
32 ora_fetch($bd);
33 $cad_id[$i]= trim(ora_getcolumn($bd, 0));
34 $cad_tit[$i]= trim(ora_getcolumn($bd, 1));
35 }
36 for ($i=1;$i<=$aux;++$i)
37 {
38 $ID_Int_Replica = $cad_id[$i];
39 $TituloIntPadre = $cad_tit[$i];
40 print("<BR>".$pref."<A HREF=Pag_3C-Dcho-Abajo.php?TituloIntervencionPadre=".urlencode($Tit uloIntPadre)."&ID_Int_Padre=$ID_Int_Replica Target=Marco3C-DchoInf> $TituloIntPadre</A>");
41 PintarHijos($bd, $cad_id[$i], $cad_tit[$i], $pref." |---");
42 }
43 }
Venga, un saludo a tod@s!! Bye!!