Thread: CREATE FUNCTION

CREATE FUNCTION

From
Jiri Nemec
Date:
Hello all, sorry about beginner question, but I'm sure function has
correct structure, buw PostgreSQL reports error. (This function is
only on approbation.)

CREATE FUNCTION foo(int2)
RETURNS TEXT
AS 'DECLARE ret TEXT;
   begin
      SELECT INTO ret CAST(name AS text)
      FROM shop_goods
      WHERE id = $1;
      return ret;
   end;'
language 'sql';

PostgreSQL still returns:

ERROR:  syntax error at or near "TEXT" at character 13

PostgreSQL version:

jirka@debian:/root$ /usr/local/postgresql/bin/postmaster --version
postmaster (PostgreSQL) 7.4.2

I have tried function from PostgreSQL book but with same results.
Thank you for replies.

--
Jiri Nemec
www.menea.cz - web solutions


Re: CREATE FUNCTION

From
Stephan Szabo
Date:
On Sun, 8 Aug 2004, Jiri Nemec wrote:

> Hello all, sorry about beginner question, but I'm sure function has
> correct structure, buw PostgreSQL reports error. (This function is
> only on approbation.)
>
> CREATE FUNCTION foo(int2)
> RETURNS TEXT
> AS 'DECLARE ret TEXT;
>    begin
>       SELECT INTO ret CAST(name AS text)
>       FROM shop_goods
>       WHERE id = $1;
>       return ret;
>    end;'
> language 'sql';

I think you meant language 'plpgsql' rather than 'sql' since the above
looks like the former.

Re: CREATE FUNCTION

From
"gnari"
Date:
[ CC'd to "Jiri Nemec" <konference@menea.cz>]

"Jiri Nemec" <konference@menea.cz> said:


> Hello all, sorry about beginner question, but I'm sure function has
> correct structure, buw PostgreSQL reports error. (This function is
> only on approbation.)
>
> CREATE FUNCTION foo(int2)
> RETURNS TEXT
> AS 'DECLARE ret TEXT;
>    begin
>       SELECT INTO ret CAST(name AS text)
>       FROM shop_goods
>       WHERE id = $1;
>       return ret;
>    end;'
> language 'sql';

should this not be language 'plpgsql' ?

or

CREATE FUNCTION foo(int2)
RETURNS TEXT AS '
  SELECT CAST(name AS text)
       FROM shop_goods
       WHERE id = $1;
' language 'sql';


mind you, i could be wrong.

gnari




Re: CREATE FUNCTION

From
Tom Lane
Date:
Jiri Nemec <konference@menea.cz> writes:
> CREATE FUNCTION foo(int2)
> RETURNS TEXT
> AS 'DECLARE ret TEXT;
>    begin
>       SELECT INTO ret CAST(name AS text)
>       FROM shop_goods
>       WHERE id = $1;
>       return ret;
>    end;'
> language 'sql';

This is a plpgsql function, not a sql function --- you are selecting
the wrong language.

            regards, tom lane