Insertando en Oracle y recuperando la secuencia ID generada

Tengo un puñado de consultas SQL sin procesar para SQL Server que usan SCOPE_IDENTITY para recuperar la ID generada para un INSERT específico inmediatamente después de que INSERT se produce en una sola ejecución ...

INSERT into Batch(
BatchName,
BatchType,
Source,
Area
) Values (
@strBatchName,
@strType,
@strSource,
@intArea
);

SELECT SCOPE_IDENTITY() BatchID;

La pregunta es

¿Cuál es la mejor manera de hacer eso para una base de datos Oracle?

¿Se puede hacer esto en Oracle a través de SQL estándar o tengo que cambiar esto para usar un procedimiento almacenado y colocar algo similar en el cuerpo del proceso almacenado?

Si debe ser un proceso almacenado, entonces, ¿cuál es la forma estándar de facto para recuperar el último número de secuencia generado, teniendo en cuenta que es probable que haya ejecuciones superpuestas en varios subprocesos, por lo que este mecanismo necesitará recuperar la ID generada correcta y no necesariamente la última ID generada absoluta.

Si dos se ejecutan simultáneamente, cada uno debe devolver la ID correcta generada de cada llamada respectiva. Tenga en cuenta que no estoy usando "@@ IDENTITY" de SQL Server debido a la naturaleza multiproceso de las llamadas.

Preferiría mantenerlo como SQL sin formato si es posible, ya que es mucho más fácil para mí administrarlo en todas las plataformas (archivo único que contiene el bloque SQL de cada plataforma separado por etiquetas de identificación DBMS). Los procesos almacenados son un poco más difíciles de manejar para mí, pero puedo hacerlo si es la única forma posible.

Respuestas a la pregunta(5)

Su respuesta a la pregunta