Thangalin <thangalin@gmail.com> writes:
> The following code works as expected, returning two columns of data (a row
> number and a valid value):
> ...
> The following code does not work as expected; the first column is a row
> number, the second column is NULL.
I think the problem is that you're assuming "amount" will refer to a
table column of the query, when actually it's a local variable of the
plpgsql function. The second interpretation will take precedence unless
you qualify the column reference with the table's name/alias.
(BTW, PG 9.0 will throw an error by default when there's an ambiguity of
this type.)
> My second question is tangentially related: how do you use PREPARE inside of
> a stored procedure?
There is no need to use PREPARE, because every SQL query in plpgsql is
effectively prepared automatically.
regards, tom lane