mysequence.CURRVAL zwraca ostatnią wartość uzyskaną z mysequence sekwencji w twojej sesja, a zatem nie jest zdefiniowana, dopóki nie uzyskasz wartości za pomocą mysequence.NEXTVAL przynajmniej raz w sesji. Celem CURRVAL jest umożliwienie użycia wartości sekwencji więcej niż raz w kodzie, np.
insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);
insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);
Jeśli CURRVAL właśnie zwrócił ostatnią wartość uzyskaną z sekwencji przez dowolny sesji, wtedy byłoby to bezużyteczne w powyższym kodzie, a w rzeczywistości mogłoby prowadzić do uszkodzenia danych!