Re: Convert Oracle function to PostgreSQL - Mailing list pgsql-general

From Albe Laurenz
Subject Re: Convert Oracle function to PostgreSQL
Date
Msg-id D960CB61B694CF459DCFB4B0128514C202FF654F@exadv11.host.magwien.gv.at
Whole thread Raw
In response to Convert Oracle function to PostgreSQL  (SHARMILA JOTHIRAJAH <sharmi_jo@yahoo.com>)
List pgsql-general
SHARMILA JOTHIRAJAH wrote:
> I use this Oracle function(from  AskTom  -
> http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:210612357425)
>
>
>
> SQL> create or replace type myTableType as table
>      of varchar2 (255);
>   2  /
>
> Type created.
>
> ops$tkyte@dev8i> create or replace
>      function in_list( p_string in varchar2 ) return myTableType
>   2  as
>   3      l_string        long default p_string || ',';
>   4      l_data          myTableType := myTableType();
>   5      n               number;
>   6  begin
>   7    loop
>   8        exit when l_string is null;
>   9        n := instr( l_string, ',' );
> 10         l_data.extend;
> 11         l_data(l_data.count) :=
>                  ltrim( rtrim( substr( l_string, 1, n-1 ) ) );
> 12         l_string := substr( l_string, n+1 );
> 13    end loop;
> 14
> 15    return l_data;
> 16  end;
> 17  /
>
> Function created.
>
> ops$tkyte@dev8i> select *
>   2    from THE
>         ( select cast( in_list('abc, xyz, 012') as
>                               mytableType ) from dual ) a
>   3  /
>
> COLUMN_VALUE
> ------------------------
> abc
> xyz
> 012
>
> How can I convert this function into PostgreSQL ? Any thoughts?

Sorry, but we can't easily do that as complicated in PostgreSQL.

You'll have to live with something like

SELECT * FROM regexp_split_to_table('abc, xyz, 012', ', ?');
 regexp_split_to_table
-----------------------
 abc
 xyz
 012
(3 rows)

Yours,
Laurenz Albe

pgsql-general by date:

Previous
From: "Albe Laurenz"
Date:
Subject: Re: writing c functions for postgres
Next
From: Niederland
Date:
Subject: exit code 128