Recursive PL/SQL

it will be a good week !

I found an elegant way to solve a query with recursive pl/sql.

an user wanted to have DHSGHDADSFDF translated in DHSGAF, that is, duplicated chars removed, order retained.

here is my function :

create or replace function f(v varchar2) return varchar2 is
begin
if (v is null) then return null;
else return substr(v,1,1)||f(replace(substr(v,2),substr(v,1,1));
end if;
end;
/

ref: using recursion with PL/SQL

4 thoughts on “Recursive PL/SQL

  1. Francois Degrelle

    SQL> select f(‘DHSGHDADSFDF’) from dual
    2 /

    F(‘DHSGHDADSFDF’)
    —————————————-
    DHSGHDADSFDF

    SQL>

    ?

  2. Anonymous

    Probably is meant
    CREATE OR REPLACE FUNCTION f(v VARCHAR2) RETURN VARCHAR2 IS
    BEGIN
    IF (v IS NULL) THEN
    RETURN NULL;
    ELSE
    RETURN Substr(v, 1, 1) || f(REPLACE(v, Substr(v, 1, 1), ”));
    END IF;
    END;
    /

    Regards
    Maxim

Comments are closed.