CREATE TABLE demo
( col1 NUMBER,
col NUMBER )
Table created.
BEGIN
FOR counter IN 1..1000 LOOP
INSERT INTO demo
VALUES(counter,
counter);
END LOOP;
END;
1 row(s) inserted.
COMMIT
Statement processed.
CREATE OR REPLACE TYPE v_n_t AS TABLE OF NUMBER;
Type created.
CREATE OR REPLACE FUNCTION delete_demo ( p_curs SYS_REFCURSOR )
RETURN v_n_t AS
PRAGMA AUTONOMOUS_TRANSACTION;
v_ret_val v_n_t := v_n_t();
v_number NUMBER;
BEGIN
LOOP
FETCH p_curs INTO v_number;
EXIT WHEN p_curs%NOTFOUND;
v_ret_val.EXTEND;
DELETE demo
WHERE col1 = v_number;
v_ret_val(1) := SQL%ROWCOUNT;
END LOOP;
COMMIT;
RETURN(v_ret_val);
END;
Function created.
ALTER SESSION FORCE PARALLEL QUERY
Statement processed.
SELECT COUNT(*)
FROM TABLE(delete_demo(CURSOR(SELECT col1
FROM demo)))
COUNT(*) | 1000 |
---|
ALTER SESSION DISABLE PARALLEL QUERY
Statement processed.
SELECT COUNT(*)
FROM demo
COUNT(*) | 0 |
---|
BEGIN
FOR counter IN 1..1000 LOOP
INSERT INTO demo
VALUES(counter,
counter);
END LOOP;
END;
1 row(s) inserted.
COMMIT
Statement processed.
CREATE OR REPLACE TYPE v_n_t AS TABLE OF NUMBER;
Type created.
CREATE OR REPLACE FUNCTION delete_demo ( p_curs SYS_REFCURSOR )
RETURN v_n_t AS
PRAGMA AUTONOMOUS_TRANSACTION;
v_ret_val v_n_t := v_n_t();
v_number NUMBER;
BEGIN
LOOP
FETCH p_curs INTO v_number;
EXIT WHEN p_curs%NOTFOUND;
v_ret_val.EXTEND;
DELETE demo
WHERE col1 = v_number;
v_ret_val(1) := SQL%ROWCOUNT;
END LOOP;
COMMIT;
RETURN(v_ret_val);
END;
Function created.
ALTER SESSION FORCE PARALLEL QUERY
Statement processed.
SELECT COUNT(*)
FROM TABLE(delete_demo(CURSOR(SELECT col1
FROM demo)))
COUNT(*) | 1000 |
---|
ALTER SESSION DISABLE PARALLEL QUERY
Statement processed.
SELECT COUNT(*)
FROM demo
COUNT(*) | 0 |
---|