CREATE FUNCTION

Started by Jiří Němecover 21 years ago4 messagesgeneral
Jump to latest
#1Jiří Němec
konference@menea.cz

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

#2Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Jiří Němec (#1)
Re: CREATE FUNCTION

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.

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jiří Němec (#1)
Re: CREATE FUNCTION

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

#4Ragnar Hafstað
gnari@simnet.is
In reply to: Jiří Němec (#1)
Re: CREATE FUNCTION

[ 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