Você pode usar a cláusula RETURNING para fazer isso nos procs armazenados do Oracle.
Por exemplo:
TABLEA tem NAME e EMP_ID. EMP_ID é preenchido internamente quando os registros são inseridos.
INSERT INTO TABLEA(NAME) VALUES ('BOB') RETURNING EMP_ID INTO o_EMP_ID;
Isso supondo que a linha esteja em um proc armazenado com um parâmetro de saída de o_EMP_ID.
Espero que ajude... se não, aqui está um exemplo mais detalhado:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm