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

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to