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

Oracle ROWID como parámetro de función/procedimiento

De la guía de conceptos :

El principal inconveniente de un ROWID es que, aunque normalmente es estable, puede cambiar en algunas circunstancias:

  • La tabla se reconstruye (ALTER TABLE MOVE ...)
  • Exportar/Importar obviamente
  • Tabla de particiones con movimiento de fila habilitado

Una clave principal identifica una fila lógicamente , siempre encontrará la fila correcta, incluso después de eliminar+insertar. Un ROWID identifica la fila físicamente y no es tan persistente como una clave principal.

Puede usar ROWID de manera segura en una sola instrucción SQL, ya que Oracle garantizará que el resultado sea coherente, por ejemplo, para eliminar duplicados en una tabla. Para estar seguro, le sugiero que solo use las declaraciones ROWID across cuando tenga un candado en la fila (SELECCIONE... PARA ACTUALIZAR).

Desde el punto de vista del rendimiento, el acceso a la clave principal es un poco más caro, pero normalmente notará esto solo si realiza muchos accesos de una sola fila. Sin embargo, si el rendimiento es crítico, generalmente puede obtener un mayor beneficio en ese caso al usar el procesamiento de conjuntos que el procesamiento de una sola fila con rowid. En particular, si hay muchos viajes de ida y vuelta entre la base de datos y la aplicación, el costo del acceso a la fila probablemente sea insignificante en comparación con el costo de los viajes de ida y vuelta.