mysequence.CURRVAL returnerar det senaste värdet som erhölls från sekvensen mysequence i din session, och definieras därför inte förrän du har fått ett värde med mysequence.NEXTVAL minst en gång i sessionen. Syftet med CURRVAL är att låta dig använda sekvensvärdet mer än en gång i din kod, t.ex.
insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);
insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);
Om CURRVAL just returnerade det sista värdet som erhölls från sekvensen av någon session, då skulle den vara värdelös i ovanstående kod, och i själva verket kan leda till datakorruption!