なぜしたいですか?あなたは、カーソル宣言で3つの列を選択している場合は、3つの別々のローカル変数にすべての3つの列を取得する必要がありますので、おそらく、あなたは、あなたのコード内のすべての3つの列を必要とする、すなわち
DECLARE
x integer;
y integer;
z integer;
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
BEGIN
OPEN c1;
LOOP
FETCH c1
INTO x, y, z;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;
代わりに、あなたが宣言することができますレコード型カーソル宣言に基づいており、また、あなたはカーソル漏れを心配する必要はありかつ(現代ではないので、一般的に好ましい方法である完全に明示的なループを取り除くことができる
DECLARE
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
c1_rec c1%ROWTYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1
INTO c1_rec;
dbms_output.put_line(c1_rec.column2);
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;
にフェッチバージョン)Oracleは自動的にバルク収集を行います
DECLARE
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
BEGIN
FOR c1_rec IN c1
LOOP
dbms_output.put_line(c1_rec.column2);
END LOOP;
END;