I am using DB2 9.7 for Z/oS. I have a table with 10+ million rows and I want to delete about 9 million rows. I have tried with below stored procedure, but without success.
CREATE PROCEDURE DELETE_DATA
(IN V_TABLE_NAME VARCHAR(24),
IN V_COMMIT_COUNT INTEGER,
IN V_WHERE_CONDITION VARCHAR(1024))
DYNAMIC RESULT SETS 01
COMMIT ON RETURN NO
LANGUAGE SQL
NOT DETERMINISTIC
L3 : BEGIN
-- DECLARE STATEMENTS
DECLARE SQLCODE INTEGER;
DECLARE V_DELETE_QUERY VARCHAR(1024);
DECLARE V_DELETE_STATEMENT STATEMENT;
SET V_DELETE_QUERY = 'DELETE FROM ' || V_TABLE_NAME ||
' WHERE COLUMN IN (SELECT COLUMN FROM '
|| V_TABLE_NAME || 'WHERE COLUMN_ID ='
|| V_WHERE_CONDITION || ' FETCH FIRST '
|| RTRIM(CHAR(V_COMMIT_COUNT)) || ' ROWS ONLY) ';
PREPARE V_DELETE_STATEMENT FROM V_DELETE_QUERY;
DEL_LOOP:
LOOP
EXECUTE V_DELETE_STATEMENT;
IF SQLCODE = 100 THEN
LEAVE DEL_LOOP;
END IF;
COMMIT;
END LOOP;
COMMIT;
END L3
Suggest me any changes in the above stored procedure.