user1表
Id
1
2
5user2表
id  num
1
2
    3
    4
5就是判断user1表ID是否按顺序增长,如果是就插入USER2的id,如果没有这个数就插入num,得到的结果是user2表
我是这样写的Declare 
i Number:=0;
Begin
Loop 
i:=i+1;
For c_num In (Select Id From user1)
Loop 
If c_num.id=i Then 
Insert Into User2(Id) Values (c_num.id);
Else 
Insert Into user2(num) Values (i);
End If;
End Loop ;
Exit When i=5;
End Loop;
Commit;
End;但是结果是插入了5次
Select * From user2
id   num

      1
      1
      1
      1

      2
      2 
      2
      2
      3
      3
.....各位看下是那里写错了?怎么循环插入了5次?我只需要一次

解决方案 »

  1.   

    在这个之后加exit试试
    If c_num.id=i Then  
    Insert Into User2(Id) Values (c_num.id);
    Else  
    Insert Into user2(num) Values (i);
    End If;
    exit;
      

  2.   


    结果这样user2表
    id num
    1
        2
        3
        4
        5
    只是1写到ID字段,其他都写到num了
      

  3.   

    这样好了
    Declare  
    i Number:=0;
    Begin
    Loop  
    i:=i+1;
    For c_num In (Select Id From user1 WHERE id>=i)
    Loop  
    Dbms_Output.put_line(c_num.id||'=='||i);
    If c_num.id=i Then  
    Insert Into User2(Id) Values (c_num.id);
    Else  
    Insert Into user2(num) Values (i);
    End If;
    EXIT;
    End Loop ;
    Exit When i=5;
    End Loop;
    --Commit;
    End;
      

  4.   

    我是oracle新手哎,大师些知道下?怎么实现?其他方法也可以啊