PLPGSQL
Is there no way in pgplsql
to call on a dynamic column.
I need to be able to dynamically determine the latest month column within a
dataset, and to get that columns data.
I am unfamiliar with other languages within Postgres
Kind Regards,
Shaun Clements
On Mar 23, 2005, at 7:56 AM, Shaun Clements wrote:
Is there no way in pgplsql
to call on a dynamic column.
I need to be able to dynamically determine the latest month column
within a dataset, and to get that columns data.
I am unfamiliar with other languages within PostgresKind Regards,
Shaun Clements
You can get all the column names for a table called 'testtable' using:
select a.attname
from
pg_attribute a,
pg_class c
where
a.attrelid=c.oid and
a.attnum>0 and
c.relname='testtable';
You can then decide what column to use based on whatever logic you
like. You will then need to construct the SQL statement using ||
(concatenate) and execute it using EXECUTE.
http://www.postgresql.org/docs/current/static/plpgsql-
statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
Does this help? Another simpler way to do this would be a different
table structure where you put the month in a column by itself rather
than a different column for each month.
Sean
On Mar 23, 2005, at 8:51 AM, Shaun Clements wrote:
Hi Sean
Ive chosen the table structure on purpose.
Im transforming data from one table to another. The problem is still
there.
I receive the column name from a query in one table, and then need to
update the table with that column name in another.This needs to be done dynamically as part of a loop. So the column
name needs to be called as a variable.
Im stuck.
The answer is here to allow you to construct SQL statements from parts:
http://www.postgresql.org/docs/current/static/plpgsql-
statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
You can pass your column name as an argument to a function that does
what you want and then concatenate it with whatever else you want in
your SQL. Then just EXECUTE the resulting statement.
Sean
Import Notes
Reply to msg id not found: 100F78F2B203444BB161BBA7077FF6131CD97B@srldbexc003.relyant.co.zaReference msg id not found: 100F78F2B203444BB161BBA7077FF6131CD97B@srldbexc003.relyant.co.za | Resolved by subject fallback