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

¿Cuál es la diferencia entre cursores explícitos e implícitos en Oracle?

Un cursor implícito es uno que Oracle crea "automáticamente" para usted cuando ejecuta una consulta. Es más simple de codificar, pero sufre de

  • ineficiencia (el estándar ANSI especifica que debe buscar dos veces para verificar si hay más de un registro)
  • vulnerabilidad a errores de datos (si alguna vez obtiene dos filas, genera una excepción TOO_MANY_ROWS)

Ejemplo

SELECT col INTO var FROM table WHERE something;

Un cursor explícito es uno que usted mismo crea. Requiere más código, pero brinda más control; por ejemplo, puede simplemente abrir, buscar y cerrar si solo desea el primer registro y no le importa si hay otros.

Ejemplo

DECLARE   
  CURSOR cur IS SELECT col FROM table WHERE something; 
BEGIN
  OPEN cur;
  FETCH cur INTO var;
  CLOSE cur;
END;