sals sallist;
BEGIN
-- Limit the number of rows to 100.
SELECT sal
BULK COLLECT INTO sals
FROM emp
WHERE ROWNUM <= 100;
-- Retrieve 10% (approximately) of the rows in the table.
SELECT sal BULK COLLECT INTO sals FROM emp SAMPLE 10;
END;
/
--在fetch into中使用bulk collect
DECLARE
TYPE deptrectab IS TABLE OF dept%ROWTYPE;
dept_recs deptrectab;
CURSOR c1
IS
SELECT deptno, dname, loc
FROM dept
WHERE deptno > 10;
BEGIN
OPEN c1;
FETCH c1
BULK COLLECT INTO dept_recs;
END;
/
--在returning into中使用bulk collect
CREATE TABLE emp2 AS SELECT * FROM employees;
DECLARE
TYPE numlist IS TABLE OF employees.employee_id%TYPE;
enums numlist;
TYPE namelist IS TABLE OF employees.last_name%TYPE;
names namelist;
BEGIN
DELETE FROM emp2
WHERE department_id = 30
RETURNING employee_id, last_name
BULK COLLECT INTO enums, names;
create or replace Procedure p_test_pro1 AS
begin
for v_i in 0..10 loop
insert into loginuser values('admin'||v_i,'123456');
end loop;
end;
create or replace Procedure p_test_pro1 AS
TYPE namelist IS TABLE OF loginuser.username%TYPE;
TYPE passwdlist IS TABLE OF loginuser.passwd%TYPE;
nlist namelist;
plist passwdlist;
begin
DELETE FROM loginuser WHERE ROWNUM<4 --删除操作测试
RETURNING username,passwd BULK COLLECT INTO
nlist,plist;
dbms_output.put_line(SQL%ROWCOUNT);
FOR i IN nlist.first..nlist.last
LOOP
dbms_output.put_line(nlist(i)||'----'||plist(i));
END LOOP;
end;
CREATE OR REPLACE Procedure p_test_pro1 AS
TYPE namelist IS TABLE OF loginuser.username%TYPE;
TYPE passwdlist IS TABLE OF loginuser.passwd%TYPE;
nlist namelist;
plist passwdlist;
begin
-- DELETE FROM loginuser WHERE ROWNUM<4
UPDATE loginuser t SET t.passwd='123' --修改操作测试
RETURNING username,passwd BULK COLLECT INTO
nlist,plist;
dbms_output.put_line(SQL%ROWCOUNT);
FOR i IN nlist.first..nlist.last
LOOP
dbms_output.put_line(nlist(i)||'----'||plist(i));
END LOOP;
end;