要求删除id为100-200 300-400 500-600...的数据
我写了一个有问题,麻烦大家帮我改下
begin
for i in 1 .. 50
loop
delete from test_append2 where id between i*100 and (i+1)*100;
i:=i+1;
end loop;
commit;
end;
我写了一个有问题,麻烦大家帮我改下
begin
for i in 1 .. 50
loop
delete from test_append2 where id between i*100 and (i+1)*100;
i:=i+1;
end loop;
commit;
end;
2 for i in 1 .. 50
3 loop
4 delete from test_append2 where id between i*100 and (i+1)*100;
5 i:=i+1;
6 end loop;
7 commit;
8 end;
9 /
i:=i+1;
*
第 5 行出现错误:
ORA-06550: 第 5 行, 第 2 列:
PLS-00363: 表达式 'I' 不能用作赋值目标
ORA-06550: 第 5 行, 第 2 列:
PL/SQL: Statement ignored
要declare i number;
2 for i in 1 .. 50 loop
3 dbms_output.put_line(i) ;
4 end loop;
5 end ;
6 /每次loop结束会隐式的i = i + 1 1 begin
2 for i in 1 .. 50 loop
3 dbms_output.put_line(i) ;
4 i := i+1 ;
5 end loop;
6* end ;
_dexter@DAVID> /
i := i+1 ;
*
ERROR at line 4:
ORA-06550: line 4, column 1:
PLS-00363: expression 'I' cannot be used as an assignment target
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored
_dexter@DAVID> begin
2 for i in 1 .. 50 loop
3 dbms_output.put_line(i) ;
4 end loop;
5 end ;
6 /
中,i的叫做loop index ,当loop 循环体内尝试改变 loop index 的值,就会报PLS-00363 这个错误。
比如:删除id为100-200 300-400 500-600...的数据,保留201-299 401-499 ....的数据
id为100-200 300-400 500-600...的数据 可以看出每次都是从奇到偶 那么就会得到between 2*(i-1)*100 and (2*i-1)*100