Re: SELECT in a function != SELECT ?
От | Joe Conway |
---|---|
Тема | Re: SELECT in a function != SELECT ? |
Дата | |
Msg-id | 3CC79E91.5070903@joeconway.com обсуждение исходный текст |
Ответ на | SELECT in a function != SELECT ? (Ian Morgan <imorgan@webcon.net>) |
Ответы |
Re: SELECT in a function != SELECT ?
Re: SELECT in a function != SELECT ? |
Список | 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
В списке pgsql-sql по дате отправления: