From: | David Gardner <david(at)gardnerit(dot)net> |
---|---|
To: | pgsql-novice(at)postgresql(dot)org |
Subject: | Re: Passing column name to a function at runtime |
Date: | 2007-09-12 14:08:22 |
Message-ID: | 46E7F2D6.3000500@gardnerit.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
What you could do instead is make a language table, so that you could do:
SELECT lanugage_name, language_id FROM language_tbl WHERE language_name=$1;
Then you could join it on your other table.
Wright, George wrote:
> I have a language table (translations) with column names which are the
> language for the items in that column:
>
>
>
> english spanish german etc.
>
>
>
> I am joining that table to another table on an integer id.
>
> I am trying to write a type statement and function where the name of the
> column is passed into the function. That language name appears in the
> select portion of the query:
>
>
>
>
>
>
>
> #type
>
> CREATE TYPE catCats AS (classid integer, varname text, color text, lang
> text);
>
>
>
>
>
>
>
> #function
>
> CREATE OR REPLACE FUNCTION listCategories(text) RETURNS SETOF catCats AS $$
>
> SELECT DISTINCT(classid), varname, color, $1
>
> FROM span_classes
>
> LEFT JOIN translations ON translations.lid = span_classes.descript_tid
>
> GROUP BY classid, varname, color, $1
>
> ORDER BY classid ASC;
>
> $$ LANGUAGE SQL;
>
>
>
>
>
>
>
> #using the function
>
> select * from listCategories(english);
>
>
>
>
>
>
>
> If I pass in english or “english” it says column does not exist. If I
> pass in ‘english’ I get the literal english in my result set.
>
> If I substitute the literal english (with no quotes) in place of the $1
> in the function, the query returns the english values from the
> translations table correctly.
>
> I’ve tried bytea for the datatype, as well as a table alias. I don’t
> know the language column until runtime so I can’t code it in the function.
>
>
>
>
>
> What am I doing wrong?
>
--
David Gardner
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Stow | 2007-09-14 05:54:44 | Triggers: FROM Inserted |
Previous Message | Oliver Elphick | 2007-09-12 13:47:42 | Re: Passing column name to a function at runtime |