Как найти первую строку в таблице заданной длины и минимальную лексикографически?

Не совсем понимаю, как это должно выглядеть. Пробую так:

function res2(name_length in integer) return varchar2 as
   resul varhcar2;
begin
   select name into resul 
   from planets 
    where length(name)=name_length and name=min(name);
    return resul;
end res2;

Но сталкиваюсь с ошибкой:

Error report -
ORA-06550: Строка 2, столбец 85:
PL/SQL: ORA-00934: групповая функция здесь не разрешена
ORA-06550: Строка 2, столбец 9:
PL/SQL: SQL Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Ответы (1 шт):

Автор решения: 0xdb

Это надо сделать так:

create or replace function res2 (name_length in integer) return varchar2 as
    pragma udf;
    res planets.name%type;
begin
    select name into res 
    from planets 
    where length (name)=name_length
    order by name desc fetch first row only; 
    return res;
end res2;
/
→ Ссылка