Oracle 批量收集到两个或多个变量中

Oracle 批量收集到两个或多个变量中,oracle,plsql,Oracle,Plsql,我想在循环游标时使用批量收集获取三个变量。可能吗?请参见下面的查询(假设声明了变量) 如果光标从不同的表中选择数据,则需要: DECLARE CURSOR c1 IS SELECT 'name1', 1, 2 FROM dual; TYPE abc IS RECORD ( -- define a record type record 'abc' name VARCHAR2 (100), value1 NUMBER, value2

我想在循环游标时使用批量收集获取三个变量。可能吗?请参见下面的查询(假设声明了变量)


如果光标从不同的表中选择数据,则需要:

DECLARE
   CURSOR c1 IS SELECT 'name1', 1, 2 FROM dual;

   TYPE abc IS RECORD ( -- define a record type record 'abc'
      name      VARCHAR2 (100),
      value1    NUMBER,
      value2    NUMBER
   );
   myAbc       abc; -- declare an object with type 'abc'

   TYPE abcTab IS TABLE OF abc; -- define a table type 'abcTab'
   myAbcTab    abcTab; -- declare an object with type 'abcTab'

BEGIN
   OPEN c1;
   FETCH c1 BULK COLLECT INTO myAbcTab;
   FOR i IN myAbcTab.FIRST .. myAbcTab.LAST LOOP
     dbms_output.put_line(myAbcTab(i).name);
   END LOOP;
   CLOSE c1;
END;
/

如果只需要单个表中的所有列,则可以使用
myAbcTab table1%ROWTYPE相反

是:这很有帮助。感谢
forall
语句第一次处理由
recCurosr
返回的所有行。循环的其余部分要做什么?
DECLARE
   CURSOR c1 IS SELECT 'name1', 1, 2 FROM dual;

   TYPE abc IS RECORD ( -- define a record type record 'abc'
      name      VARCHAR2 (100),
      value1    NUMBER,
      value2    NUMBER
   );
   myAbc       abc; -- declare an object with type 'abc'

   TYPE abcTab IS TABLE OF abc; -- define a table type 'abcTab'
   myAbcTab    abcTab; -- declare an object with type 'abcTab'

BEGIN
   OPEN c1;
   FETCH c1 BULK COLLECT INTO myAbcTab;
   FOR i IN myAbcTab.FIRST .. myAbcTab.LAST LOOP
     dbms_output.put_line(myAbcTab(i).name);
   END LOOP;
   CLOSE c1;
END;
/