l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2007 Jan 10 19:01

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
[vox-tech] Re: vox-tech Digest, Vol 32, Issue 9
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vox-tech] Re: vox-tech Digest, Vol 32, Issue 9

The "EXECUTE" command is typically used on complete sql expressions.
(the information is parsed, and passed to the database.)

my_command := 'select count(*) from my_table'
EXECUTE my_command;

So if you want to dynamically select a column.

my_column := 'DUMMY'
my_command := 'select '||my_column||' from my_table;'
EXECUTE my_command;

Be careful using dynamic sql on web pages.  The unchecked
concatenation of strings can lead to "SQL Injection" vulnerabilities.


On 1/10/07, vox-tech-request@lists.lugod.org
<vox-tech-request@lists.lugod.org> wrote:
Send vox-tech mailing list submissions to

To subscribe or unsubscribe via the World Wide Web, visit
or, via email, send a message with subject or body 'help' to

You can reach the person managing the list at

When replying, please edit your Subject line so it is more specific
than "Re: Contents of vox-tech digest..."

Today's Topics:

   1. pl/pgsql question: dynamic access to record.column
      (Dylan Beaudette)


Message: 1
Date: Wed, 10 Jan 2007 11:28:47 -0800
From: Dylan Beaudette <dylan.beaudette@gmail.com>
Subject: [vox-tech] pl/pgsql question: dynamic access to record.column
To: vox-tech@lists.lugod.org
Message-ID: <200701101128.47428.dylan.beaudette@gmail.com>
Content-Type: text/plain;  charset="us-ascii"


I am learning how to use PL/PGSQL and have come upon something that I just
don't seem to be able to solve on my own.

I have a function, which takes a column name as an argument. A FOR loop
iterates over rows, using a RECORD datatype to store each iteration of the

If I hard-code in a column name into some calculation, things work fine.
However, I cannot seem to figure out how to _dynamically_ access a column
from a RECORD datatype:

-- this works fine : 'field_pct_clay' is a hard-coded column name
hz_record RECORD;
wt_column FLOAT;
thick FLOAT;
wt_column := wt_column + (hz_record.field_pct_clay * thick) ;

-- this does not work: 'the_column' is an argument to the function being

wt_column := wt_column + (hz_record.the_column * thick) ;

obviously, the interpreter tells me that there is no column named 'the_column'
in the RECORD iterator...

Searching on google, it seems that a dynamic expression like this needs to be
evaluated with the EXECUTE keyword.... However something like this does not

wt_column := EXECUTE 'wt_column + (hz_record.' || quote_ident(the_column) || '
* thick)' ;

any tips would be a great help!


Dylan Beaudette
Soils and Biogeochemistry Graduate Group
University of California at Davis


vox-tech mailing list

End of vox-tech Digest, Vol 32, Issue 9

-- Kevin Hrim

Teach this triple truth to all: A generous heart, kind speech, and a
life of service and compassion are the things which renew humanity. -
vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
EDGE Tech Corp.
For donating some give-aways for our meetings.