Tom Lane wrote:
> Bill Moran <wmoran@potentialtech.com> writes:
>
>>Some of the plpgsql functions I've created work fine on 7.4, but
>>fail on 7.3.4. Specifically, when I use a "FOR var IN select LOOP"
>>loop with a LONG select statement, it works fine on 7.4, but
>>bonks with "missing .. at end of SQL expression" in 7.3.4
>
> That error message suggests that plpgsql thinks the "var" is not
> declared as a record or rowtype variable. I think you should look
> to the variable declaration as the source of the issue, not the FOR
> statement itself. There were some 7.4 fixes associated with
> plpgsql rowtype variables, for instance this one:
Ahh ... this is an interesting twist.
In the cases where I'm having problems, I'm defining a custom type
with CREATE TYPE, because it's the easiest way I can think of to
move the data around.
Assuming:
CREATE TYPE testtype AS ...
Are you suggesting that:
rval testtype%ROWTYPE;
is likely to work around the problem? So far, I've just been
using:
rval testtype;
I'll test this to see what happens.
> 2003-04-27 18:21 tgl
>
> * doc/src/sgml/plpgsql.sgml, src/pl/plpgsql/src/gram.y,
> src/pl/plpgsql/src/pl_comp.c, src/pl/plpgsql/src/plpgsql.h: Fix
> plpgsql so that variables of composite types (rowtypes) can be
> declared without having to write %ROWTYPE. If the declared type of
> a variable is a composite type, it'll be taken to be a row variable
> automatically.
>
> although my recollection is that without %ROWTYPE, 7.3 plpgsql would
> fail on the variable declaration.
>
> regards, tom lane
>
--
Bill Moran
Potential Technologies
http://www.potentialtech.com