En ese contexto no puedes obtener el nombre, porque debes agrupar por tipo, y si agrupas por tipo y nombre, te puede devolver más de uno de cada categoría, si hay más de un tipo de plato con el mismo precio.
Para que te devuelva un único plato por cada tipo, se requiere una estructura más compleja de lo que planteas.
En todo caso, para obtener de cada tipo, el precio mínimo sería:
Código SQL:
Ver original/*----declaracion---*/
DECLARE
CURSOR cursor1
IS
SELECT tipo, MIN (precio) precio
FROM platos
GROUP BY tipo;
V_tipo VARCHAR2 (20);
V_precio NUMBER;
BEGIN
/*----apertura---*/
OPEN cursor1;
/*----recogida de datos---*/
LOOP
FETCH cursor1
INTO V_tipo, v_precio;
EXIT WHEN cursor1%NOTFOUND;
DBMS_OUTPUT.put_line ( 'Tipo: '
|| v_tipo
|| ' Precio: '
|| TO_CHAR (v_precio)
);
END LOOP;
/*----cierre del cursor--*/
CLOSE cursor1;
END;
/