From: | Joe Conway <mail(at)joeconway(dot)com> |
---|---|
To: | Ian Morgan <imorgan(at)webcon(dot)net> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: SELECT in a function != SELECT ? |
Date: | 2002-04-25 06:13:37 |
Message-ID: | 3CC79E91.5070903@joeconway.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Ian Morgan wrote:
> 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)
>
Try this:
test=# 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;
CREATE
test=# SELECT get_colname('foo',3);
get_colname
-------------
f3
(1 row)
The $1 is already known to be a name, so you don't want the '' around it
in the function definition.
>
> 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?
>
No, this is correct. The function is returning NULL, and anything
concatenated with NULL is still NULL.
HTH,
Joe
From | Date | Subject | |
---|---|---|---|
Next Message | Rajesh Kumar Mallah | 2002-04-25 06:52:28 | Database Server in Recovery mode! |
Previous Message | Ian Morgan | 2002-04-25 05:44:15 | SELECT in a function != SELECT ? |