mysequence.CURRVAL restituisce l'ultimo valore ottenuto dalla sequenza mysequence nel tuo session, e quindi non è definito finché non hai ottenuto un valore usando mysequence.NEXTVAL almeno una volta nella sessione. Lo scopo di CURRVAL è quello di consentirti di utilizzare il valore della sequenza più di una volta nel tuo codice, ad es.
insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);
insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);
Se CURRVAL ha appena restituito l'ultimo valore ottenuto dalla sequenza da qualsiasi sessione, allora sarebbe inutile nel codice sopra, e infatti potrebbe portare alla corruzione dei dati!