0

cur これらのレコードを含むカーソルがある場合

DEPTNO ENAME  ORD   CNT                        
10     KING   1      3                      
10     CLARK  2      3                      
10     MILLER 3      3                      
20     JONES  1      5 

私は次のようにカーソルレコードを取得します:

FOR i IN cur LOOP
  --Process
END LOOP;

次に、プロセスを拡張してチェックを行う必要があります。最後のレコードのCNT列の値が5に等しい場合は、このカーソルに移動する必要はありません。

カーソルの最後のレコードを直接取得して、ループせずにCNT列をテストする方法はありますか?

4

1 に答える 1

2

いいえ。カーソルは、クエリを実行するプログラムへのポインタです。カーソルからのみフェッチできます。Oracle自体は、行をフェッチして返す行がなくなるまで、カーソルが最後の行を返すかどうかを認識していません。

CNTもちろん、最後の行のが別の列に返されるようにクエリを変更することもできます(「最後の行」が意味のある概念になるように行を並べ替える方法があると仮定します)。

于 2013-01-18T18:08:55.793 に答える