Разбиваем строку и склоняем по падежам

Разбиваем строку и склоняем по падежам (дательный).

function SPLIT_GETWORD_ON_CASE(sSTR in varchar2) return varchar2 as
return_value varchar2(1000);
return_values varchar2(1000);
lastPosition number := 1;
currentPosition number;
sDelim varchar2(1) := ' ';
begin
currentPosition := instr(sStr, sDelim);
while currentPosition > 0 loop
return_value := substr(sStr, lastPosition, currentPosition -lastPosition);
lastPosition := currentPosition + length(sDelim);
currentPosition := instr(sStr, sDelim, lastPosition);
return_values := return_values || ' ' || F_GETWORD_ON_CASE(return_value, 'д', 1, 'ф');
end loop;
return_values := return_values || ' ' || F_GETWORD_ON_CASE(substr(sStr, lastPosition), 'д', 1, 'ф');
return return_values;
end SPLIT_GETWORD_ON_CASE;

падежи для программиста