| 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: | Whole Thread | Raw Message | 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 *
-------------------------------------------------------------------
| 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. |