sql >> Base de Datos >  >> RDS >> Oracle

Oracle 11g:en PL/SQL, ¿hay alguna forma de obtener información sobre las filas insertadas y actualizadas después de la instrucción MERGE DML?

No hay una forma integrada de obtener recuentos separados de inserción y actualización, no. SQL%ROWCOUNT le diría la cantidad de filas fusionadas, como probablemente ya sepa, pero no hay un equivalente para obtener valores separados para las inserciones y actualizaciones.

Este artículo de Adrian Billington muestra una forma de obtener la información mediante la inclusión de una llamada de función en la combinación, lo que podría agregar un poco de sobrecarga.

Hay un truco similar, y quizás más simple, de MichaelS en los foros de Oracle , por lo que tampoco puedo tomar ningún crédito, por supuesto. Estoy tentado de reproducirlo aquí, pero no estoy seguro de si eso está permitido, pero esencialmente está usando sys_context para mantener un conteo, de la misma manera que lo hizo la solución de Adrian con una variable de paquete. Yo usaría ese, ya que es más limpio y creo que es más fácil de seguir y mantener.

Todavía peligrosamente cerca de una respuesta de solo enlace, pero tampoco quiero plagiar el trabajo de otros...