Re: PL/pgSQL 'i = i + 1' Syntax

From: "Albe Laurenz" <all(at)adv(dot)magwien(dot)gv(dot)at>
To: "pgsql-hackers" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: PL/pgSQL 'i = i + 1' Syntax
Date: 2006-05-17 07:10:58
Message-ID: 52EF20B2E3209443BC37736D00C3C1380876BDC7@EXADV1.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Tom Lane wrote:
>> It ought to be illegal to modify the loop control variable anyway,
>> IMNSHO - it certainly is in Ada, the distant antecedent of pl/pgsql.
>
> If modifying the loop variable is disallowed in PL/SQL, I'm all for
> disallowing it in plpgsql, otherwise not. Anyone have a
> recent copy of Oracle to try it on?

I tried this on Oracle 10.2.0.2.0 (which is the most recent version):

SET SERVEROUTPUT ON
BEGIN
FOR i IN 1..10 LOOP
i := i + 1;
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
/
i := i + 1;
*
ERROR at line 3:
ORA-06550: line 3, column 7:
PLS-00363: expression 'I' cannot be used as an assignment target
ORA-06550: line 3, column 7:
PL/SQL: Statement ignored

And the documentation also explicitly states that it is not allowed.

By the way, PL/SQL screams if you want to do an assignment with '='.
But I guess that the current behaviour of PL/pgSQL should not reflect
that to maintain backward compatibility, right?

Yours,
Laurenz Albe

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Gurjeet Singh 2006-05-17 07:17:33 Re: audit table containing Select statements submitted
Previous Message Greg Stark 2006-05-17 06:31:20 Re: audit table containing Select statements submitted