2016-07-19 5 views
0

私はテーブルを持っているので、このテーブルを使ってネストされたforループを実装する必要があります。したがって、両方のループで同じテーブルが使用されます。外部ループは、テーブルの最初のインデックス(プライマリキー)を開始し、最後のインデックスに移動します。内部ループは外側ループが残っているところから始まります。最後のインデックスがoracleでチェックインされた場所からforループを反復する方法は?

私のサンプルコード:

declare 
res varchar2(5);--TRUE or FALSE 
BEGIN 
FOR aRow IN (SELECT MI_PRINX, geoloc, ROWID FROM ORAHAN) 
LOOP 
    FOR bRow IN (SELECT MI_PRINX, geoloc, ROWID FROM ORAHAN) 
    LOOP 
    select SDO_GEOM.RELATE(aRow.geoloc,'anyinteract', bRow.Geoloc,0.02) into res from dual; 
    if (res='TRUE') 
    THEN 
     Insert INTO ORAHANCROSSES values (aRow.MI_PRINX,bRow.MI_PRINX); 
    END IF; 
    END LOOP; 
END LOOP; 
END ; 
+0

が依存だと思います。 2つ目の行のMI_PRINXが> aRow.MI_PRINXより大きいすべての行を選択するだけです。 MI_PRINXが数字または文字列の場合は簡単です。また、それを最適化して、自身への結合を行い、1つのカーソルを取得することもできます。 – LoztInSpace

+0

MI_PRINXは数字(10)です。私はカーソルを検索していただきありがとうございます。 –

答えて

1
FOR bRow IN (SELECT MI_PRINX, geoloc, ROWID FROM ORAHAN where MI_PRINX>aRow.MI_PRINX) 

私は:)

関連する問題