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;
/