Quelque chose comme ?
select t.*, round(dbms_random.value() * 8) + 1 from foo t;
Edit :David a souligné que cela donne une distribution inégale pour 1 et 9.
Comme il le souligne, ce qui suit donne une meilleure distribution :
select t.*, floor(dbms_random.value(1, 10)) from foo t;