Skip to content

Instantly share code, notes, and snippets.

@cheinema
Created August 18, 2010 10:03
Show Gist options
  • Save cheinema/534224 to your computer and use it in GitHub Desktop.
Save cheinema/534224 to your computer and use it in GitHub Desktop.
CREATE TABLE bulk (x NUMBER(9), y NUMBER(9));
INSERT INTO bulk(x,y) VALUES (0,0);
INSERT INTO bulk(x,y) VALUES (1,1);
DECLARE
CURSOR vac_bulk IS
SELECT t.ROWID AS tRowID, t.x, t.y FROM bulk t;
TYPE t_bulk IS TABLE OF vac_bulk%ROWTYPE;
vaa_bulk_tmp t_bulk;
van_bulkcollectsize NUMBER := 100;
BEGIN
OPEN vac_bulk;
LOOP
FETCH vac_bulk
BULK COLLECT INTO vaa_bulk_tmp LIMIT van_bulkcollectsize;
FOR i IN 1 .. vaa_bulk_tmp.COUNT LOOP
UPDATE bulk SET y = vaa_bulk_tmp(i).y + 1 WHERE ROWID = vaa_bulk_tmp(i).tRowID;
END LOOP;
EXIT WHEN vaa_bulk_tmp.COUNT < van_bulkcollectsize;
END LOOP;
CLOSE vac_bulk;
END;
/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment