SELECT in a function != SELECT ?

From: Ian Morgan <imorgan(at)webcon(dot)net>
To: pgsql-sql(at)postgresql(dot)org
Subject: SELECT in a function != SELECT ?
Date: 2002-04-25 05:44:15
Message-ID: Pine.LNX.4.44.0204250101300.26231-100000@light.webcon.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

While trying to formulate an answer to another user's query on this list, I
came a across what I think is strange behaviour in an SQL funsction:

The 3rd column of my 'contacts' table is 'first_name'.

A regular select will allow me to find this:

SELECT a.attname FROM pg_class c, pg_attribute a
WHERE c.relname = 'contacts'
and a.attnum = 3 and a.attrelid=c.oid;

attname
------------
first_name
(1 row)

But when turned into a function:

CREATE FUNCTION get_colname (name,smallint)
RETURNS name AS '
SELECT a.attname FROM pg_class c, pg_attribute a
WHERE c.relname = ''$1''
and a.attnum = $2 and a.attrelid=c.oid
'
LANGUAGE SQL;

SELECT get_colname('contacts',3);

get_colname
-------------

(1 row)

The result is empty!?

Even more strange:

SELECT 'x'||get_colname('contacts',3)||'x' as foo;

foo
-----

(1 row)

Should I not be seeing "xx" as the result here!? What's going on? Anyone
wknow why the above function get_colname isn't doing what I expect?

Regards,
Ian Morgan
--
-------------------------------------------------------------------
Ian E. Morgan Vice President & C.O.O. Webcon, Inc.
imorgan(at)webcon(dot)net PGP: #2DA40D07 www.webcon.net
* Customized Linux network solutions for your business *
-------------------------------------------------------------------

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Joe Conway 2002-04-25 06:13:37 Re: SELECT in a function != SELECT ?
Previous Message Bruno Ricardo Sacco 2002-04-25 04:44:59 Pl/pgSQL Question.