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;