Re: PL/pgSQL 'i = i + 1' Syntax
От | Andrew Dunstan |
---|---|
Тема | Re: PL/pgSQL 'i = i + 1' Syntax |
Дата | |
Msg-id | 2447.24.211.165.134.1147862438.squirrel@www.dunslane.net обсуждение исходный текст |
Ответ на | Re: PL/pgSQL 'i = i + 1' Syntax ("Albe Laurenz" <all@adv.magwien.gv.at>) |
Ответы |
Re: PL/pgSQL 'i = i + 1' Syntax
|
Список | pgsql-hackers |
Albe Laurenz said: > 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. > So should we if it can be done conveniently. That might be a big IF - IIRC many Pascal compilers ignore the similar language rule because implementing it is a pain in the neck. > 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? > I think it should. The current behaviour is undocumented and more than icky. cheers andrew
В списке pgsql-hackers по дате отправления: