1

結果は値の配列になる可能性があるため、選択クエリの結果を配列変数に割り当てる方法を教えてください。

4

1 に答える 1

2

配列にデータを取得するには、いくつかの方法があります。1 つ目は、次のような単純なループです。

DECLARE
  TYPE NUMBER_ARRAY IS VARRAY(100) OF NUMBER;

  arrNums  NUMBER_ARRAY;
  i NUMBER := 1;
BEGIN
  arrNums := NUMBER_ARRAY();

  FOR aRow IN (SELECT NUMBER_FIELD
                 FROM A_TABLE
                 WHERE ROWNUM <= 100)
  LOOP
    arrNums.EXTEND;
    arrNums(i) := aRow.SEQUENCE_NO;
    i := i + 1;
  END LOOP;
end;

@Rene が提案するもう 1 つの方法は、次のように BULK COLLECT を使用することです。

DECLARE
  TYPE NUMBER_ARRAY IS VARRAY(100) OF NUMBER;

  arrNums  NUMBER_ARRAY;
BEGIN
  arrNums := NUMBER_ARRAY();
  arrNums.EXTEND(100);

  SELECT NUMBER_FIELD
    BULK COLLECT INTO arrNums
    FROM A_TABLE
    WHERE ROWNUM <= 100;
end;

共有してお楽しみください。

于 2012-05-29T10:59:33.357 に答える