Tengo un puñado de consultas SQL primas para SQL Server que utilizan SCOPE_IDENTITY para recuperar el ID generado por un inserto específico inmediatamente después de que INSERT se produce en una única realización ...Inserción en Oracle y la recuperación de la secuencia generada ID
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 hacerlo 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, ¿cuál es la forma estándar de facto para recuperar el último número de secuencia generado, teniendo en cuenta que probablemente habrá ejecuciones superpuestas en varios hilos por lo que este mecanismo tendrá que recuperar el ID generado correctamente y no necesariamente la última ID generada.
Si dos se ejecutan simultáneamente, cada uno debe devolver la ID generada correcta 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 las etiquetas de identificación DBMS). Los procesos almacenados me resultan un poco más difíciles de manejar, pero puedo hacerlo de la única manera posible.
Esas son algunas de las mejores respuestas. Ahora que estoy llegando a la tarea parece otra capa usando un "paquete", colocar un cursor en "ROWTYPE" y devolver algunos de los datos a través de un procedimiento o función * dentro del paquete * será el último paso para devolver los datos como un conjunto de resultados para que la persona que llama pueda realizar un SELECCIONAMIENTO pero pasar los datos que se deben insertar como parámetros a la función paquete. Nuevo para él, así que espero que todo tenga sentido. – Allbite