aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-07-04 02:49:04 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-07-04 02:49:04 +0000
commita72dd7a9e4ddf8a9bc3443b4d10d6fef767ad066 (patch)
treeaeaa150286fa760b7c85368e67ab2e6ed24f832d /doc/src
parentf5c798ee826e4a62799e17423e4f57fcd13f112c (diff)
downloadpostgresql-a72dd7a9e4ddf8a9bc3443b4d10d6fef767ad066.tar.gz
postgresql-a72dd7a9e4ddf8a9bc3443b4d10d6fef767ad066.zip
Okay, I've had it with answering newbie questions about why plpgsql
FOR loops are giving weird syntax errors. Restructure parsing of FOR loops so that the integer-loop-vs-query-loop decision is driven off the presence of '..' between IN and LOOP, rather than the presence of a matching record/row variable name. Hopefully this will make the behavior a bit more transparent.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/plpgsql.sgml17
1 files changed, 8 insertions, 9 deletions
diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml
index b8eadd04552..952351170cc 100644
--- a/doc/src/sgml/plpgsql.sgml
+++ b/doc/src/sgml/plpgsql.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.38 2004/05/16 23:22:06 neilc Exp $
+$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.39 2004/07/04 02:48:52 tgl Exp $
-->
<chapter id="plpgsql">
@@ -1769,7 +1769,7 @@ END;
<para>
The <literal>FOR-IN-EXECUTE</> statement is another way to iterate over
- records:
+ rows:
<synopsis>
<optional>&lt;&lt;<replaceable>label</replaceable>&gt;&gt;</optional>
FOR <replaceable>record_or_row</replaceable> IN EXECUTE <replaceable>text_expression</replaceable> LOOP
@@ -1788,13 +1788,12 @@ END LOOP;
<para>
The <application>PL/pgSQL</> parser presently distinguishes the
two kinds of <literal>FOR</> loops (integer or query result) by checking
- whether the target variable mentioned just after <literal>FOR</> has been
- declared as a record or row variable. If not, it's presumed to be
- an integer <literal>FOR</> loop. This can cause rather nonintuitive error
- messages when the true problem is, say, that one has
- misspelled the variable name after the <literal>FOR</>. Typically
- the complaint will be something like <literal>missing ".." at end of SQL
- expression</>.
+ whether <literal>..</> appears outside any parentheses between
+ <literal>IN</> and <literal>LOOP</>. If <literal>..</> is not seen then
+ the loop is presumed to be a loop over rows. Mistyping the <literal>..</>
+ is thus likely to lead to a complaint along the lines of
+ <quote>loop variable of loop over rows must be a record or row</>,
+ rather than the simple syntax error one might expect to get.
</para>
</note>
</sect2>