Hola.
Sobre tu problema, y siguiendo con la idea de marcos, interbase/firebird soporta llamadas recursivas a los procedimientos almacenados. Con ello, se puede convertir en algo tan simple como:
Código SQL
[-]
Select *
from explosion_materiales(:codigo);
y explosion materiales, se encargará de llamarse recursivamente para aquellos materiales "compuestos".
Ahora. Has colocado antes esta pregunta en otro hilo. La guia de estilo (leela si no lo has hecho todavia) recomienda no duplicar las preguntas, por lo que lo pertinente es que esperaras respuestas alla.
Hasta luego.
