Re: Convert Oracle function to PostgreSQL

Поиск
Список
Период
Сортировка
От Albe Laurenz
Тема Re: Convert Oracle function to PostgreSQL
Дата
Msg-id D960CB61B694CF459DCFB4B0128514C202FF654F@exadv11.host.magwien.gv.at
обсуждение исходный текст
Ответ на Convert Oracle function to PostgreSQL  (SHARMILA JOTHIRAJAH <sharmi_jo@yahoo.com>)
Список 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 по дате отправления:

Предыдущее
От: "Albe Laurenz"
Дата:
Сообщение: Re: writing c functions for postgres
Следующее
От: Niederland
Дата:
Сообщение: exit code 128