Qestion about CREATE FUNCTION

Started by Cornelia Boenigkabout 24 years ago2 messagesgeneral
Jump to latest
#1Cornelia Boenigk
poppcorn@cornelia-boenigk.de

Hi all

I defined the following function:

CREATE FUNCTION ka(member)
RETURNS member AS
'UPDATE member SET m_email = ''unbekannt'' WHERE m_email = NULL:
SELECT * FROM member;'
LANGUAGE 'sql';

If I call
SELECT ka(member) FROM member;
ka
-------------
12257440
.....

I get this number as many times as the table consists rows (no matter
weather they were updated or not). Could anybody tell me what kind of
result this is? What does this number mean?

If I use the notation with $1 like in the Programmers Guide in chapter
13.1.3 I get a parsing error. (??)

Could anybody explain this behaviour?

Thanks and greetings
Conni

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Cornelia Boenigk (#1)
Re: Qestion about CREATE FUNCTION

"Cornelia Boenigk" <poppcorn@cornelia-boenigk.de> writes:

Could anybody explain this behaviour?

See
http://www.ca.postgresql.org/users-lounge/docs/7.2/postgres/xfunc-sql.html
which says in part:

In the present release of PostgreSQL there are some unpleasant
restrictions on how functions returning composite types can be
used. Briefly, when calling a function that returns a row, we cannot
retrieve the entire row. We must either project a single attribute out
of the row or pass the entire row into another function. (Trying to
display the entire row value will yield a meaningless number.)

regards, tom lane