ciao a tutti, devo creare la seguente funzione in PL/SQL:

creazione di una funzione che restituisca la spesa riportata in una "nota spese" di un parlamentare passato in input raggruppata per legislatura.

in pratica io ho il databse "parlamentoDB" con le seguenti tabelle utili per la funzione:

PARLAMENTARI
(NOME, COGNOME, DATA_NASCITA, TIPO, INIZIO CARICA, FINE CARICA, LEGISLATURA, E ALTRI ATTRIBUTI)

SPESE
(NOME_PARL, COGN_PARL, NASCITA_PARL, LEGISLATURA, TRASPORTO, TELEFONO, SANITARIE, SICUREZZA, ALTRO, TOT).

QUELLO CHE MI CHIEDO IO COME DEVE ESSERE QUESTA NOTA SPESE? STO USANDO SQL DEVELOPER MA LE FUNZIONI RESISTUISCONO SOLO I TIPO PREDEFINITI OLTRE A CLOB E BLOB;
HO PROVATO A FAR RESTITUIRE UN CLOB MA MI Dà UN'UNICA STRINGA SENZA LA POSSIBILITà DI POTER ANDARE A CAPO IN MODO FAR FAR VISUALIZZARE UNA NOTA SPESE PIù SCHEMATICA.

LA FUNZIONE CHE HO FATTO è LA SEGUENTE:

codice:
create or replace FUNCTION repositoryadm.NOTA_SPESE 
(
  NOMEP IN VARCHAR2, 
  COGNOMEP IN VARCHAR2, 
  NASCITAP IN DATE  
) RETURN CLOB AS 

CURSOR c1 IS
    SELECT * FROM REPOSITORYADM.SPESE
    WHERE((PARL_NOME = NOMEP) and (parl_cognome = COGNOMEP) and (parl_nascita = NASCITAP))
    ORDER BY (SPESE.legislatura);
    
spesa c1%rowtype;
nota CLOB := '';

BEGIN
  OPEN c1;
  nota := ' trasporto  telefono  sanitarie  sicurezza  altro  tot' || CHR(13) || CHR(10);
  LOOP
    FETCH c1 into spesa;
    EXIT WHEN c1%notfound;
    nota := nota || '  ' || spesa.trasporto || '  ' || spesa.telefono || '  ' ||spesa.sanitarie || '  ' || spesa.sicurezza || '  ' || spesa.altro || '  ' || spesa.tot || chr(13) || chr(10);
  END LOOP;
  CLOSE c1;
  
  dbms_output.put_line('la percentuale di spesa per il trasporto è ' || ((spesa.trasporto * 100) / spesa.tot) || '%');
  dbms_output.put_line('la percentuale di spesa telefonica è ' || ((spesa.telefono * 100) / spesa.tot) || '%');
  dbms_output.put_line('la percentuale di spesa sanitaria è ' || ((spesa.sanitarie * 100) / spesa.tot) || '%');
  dbms_output.put_line('la percentuale di spesa per la sicurezza è ' || ((spesa.sicurezza * 100) / spesa.tot) || '%');
  dbms_output.put_line('la percentuale di spesa per le altre spese è ' || ((spesa.altro * 100) / spesa.tot) || '%');
    
  RETURN nota;
END NOTA_SPESE;
IN PIù LA FUNZIONE NON VISUALIZZA A VIDEO I MESSAGGI.

COME POSSO FARE??? VI PREGO AIUTATEMI.