Re: SELECT in a function != SELECT ?
От | Jan Wieck |
---|---|
Тема | Re: SELECT in a function != SELECT ? |
Дата | |
Msg-id | 200204251353.g3PDrLd24680@saturn.janwieck.net обсуждение исходный текст |
Ответ на | Re: SELECT in a function != SELECT ? (Joe Conway <mail@joeconway.com>) |
Список | pgsql-sql |
Joe Conway wrote: > 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. Not because it's known to be a name, but because enclosing it into quotes makes it the literal string '$1' instead of the parameter passed in. Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #================================================== JanWieck@Yahoo.com #
В списке pgsql-sql по дате отправления: