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