Sinon je ne comprends pas pourquoi le WITH qui fait parti de la requête SQL se trouve après le SQL dans ta fonction.

Tu ne voulais pas faire plutôt :



create or replace function...