Обсуждение: writing a function without installing a language

Поиск
Список
Период
Сортировка

writing a function without installing a language

От
"${spencer}"
Дата:
is there a way to write a function without installing a specific
language? all i need to do is write a function that can take 3 text's
and put them into a list format (eg. "text1, text2 and text3" )

can anyone help?

Re: writing a function without installing a language

От
Adrian Klaver
Дата:
On Friday 16 May 2008 7:56 am, ${spencer} wrote:
> is there a way to write a function without installing a specific
> language? all i need to do is write a function that can take 3 text's
> and put them into a list format (eg. "text1, text2 and text3" )
>
> can anyone help?

You can use C or SQL to write a function as they are "preinstalled".
See:
http://www.postgresql.org/docs/8.3/interactive/xfunc.html
--
Adrian Klaver
aklaver@comcast.net

Re: writing a function without installing a language

От
Craig Ringer
Дата:
${spencer} wrote:
> is there a way to write a function without installing a specific
> language? all i need to do is write a function that can take 3 text's
> and put them into a list format (eg. "text1, text2 and text3" )

Does PL/PgSQL count as a "language" for your purposes?

PL/PgSQL is built and shipped with the postgreSQL server. It's
essentially always installed. By default it's just not enabled for
access in any database.

The statement:

   CREATE LANGUAGE plpgsql;

just tells a given database that PL/PgSQL should be available.

Failing that, you might be able to use an SQL function (though I don't
really see how you'd handle the special case for "and" without a
subquery to obtain a total result count) or write a C extension to do it.

Using PL/PgSQL is certainly the easy way.

--
Craig Ringer

Re: writing a function without installing a language

От
"Leif B. Kristensen"
Дата:
On Friday 16. May 2008, ${spencer} wrote:
>is there a way to write a function without installing a specific
>language? all i need to do is write a function that can take 3 text's
>and put them into a list format (eg. "text1, text2 and text3" )
>
>can anyone help?

sandbox=> create function foo(text,text,text) returns text as $$
sandbox$> select $1 || ', ' || $2 || ', and ' || $3
sandbox$> $$ language sql stable;
CREATE FUNCTION
sandbox=> select foo('x','y','z');
     foo
-------------
 x, y, and z
(1 row)

sandbox=>
--
Leif Biberg Kristensen | Registered Linux User #338009
http://solumslekt.org/ | Cruising with Gentoo/KDE
My Jazz Jukebox: http://www.last.fm/user/leifbk/

Re: writing a function without installing a language

От
Craig Ringer
Дата:
Craig Ringer wrote:
> ${spencer} wrote:
>> is there a way to write a function without installing a specific
>> language? all i need to do is write a function that can take 3 text's
>> and put them into a list format (eg. "text1, text2 and text3" )

> Failing that, you might be able to use an SQL function (though I don't
> really see how you'd handle the special case for "and" without a
> subquery to obtain a total result count)

... if the input was a set of `text', not 3 individual `text' arguments.
Whoops. It's trivially done with plain SQL.

--
Craig Ringer

Re: writing a function without installing a language

От
"${spencer}"
Дата:
thanks for the help guys, i've solved the problem using PL/PgSQL. once
i had "created" the language it was really rather simple.

thanks again