how about you create a refresh-on-commit materialized view on a table, and use that as the mechanism?

Code:
create table t (col1 char(1) primary key);

create materialized view mv
refresh complete on commit
as
select
   to_number(col1) col1,
   count(*)
from t
group by to_number(col1);

insert into t values (1);
commit;
insert into t values ('A');
commit;
select * from t;