Я пытаюсь удалить записи из таблиц с огромным объемом записей.
Теперь ошибка
'Курсор C1 определяет подготовленный оператор, который не является оператором SELECT илиЗНАЧЕНИЯ '
1-добавлено COMMIT, без использования COMMIT' Журналы транзакций 'становятся полными.2. Добавлен оператор WITH HOLD, чтобы курсор оставался активным.
Строки с '--NEW ADDED' показывают новый добавленный код для уже работающего удаления без COMMIT и WITH HOLD
CREATE PROCEDURE
TABLE1.MYPROC1 ( IN A VARCHAR(100),IN B INTEGER,IN C INTEGER)
LANGUAGE SQL
BEGIN
DECLARE SQLCODE int;
DECLARE V_CREATE_QUERY VARCHAR(1024);
DECLARE V_DELETE_STATEMENT STATEMENT;
DECLARE C1 CURSOR WITH HOLD FOR V_DELETE_STATEMENT;--NEW ADDED
SET V_CREATE_QUERY='DELETE FROM (SELECT * FROM '||a||' WHERE KEY
=='||RTRIM(CHAR(B)||' ' FETCH FIRST ' || RTRIM (CHAR(C)||' ROWS ONLY ) AS
PURGE_TABLE';
PREPARE V_DELETE_STATEMENT FROM V_CREATE_QUERY;
OPEN C1; --NEW ADDED
WHILE(SQLCODE <>1000)
DO
EXECUTE V_DELETE_STATEMENT;
COMMIT; --NEW ADDED
END WHILE;
CLOSE C1 --NEW ADDED
end
Пожалуйста, дайте мне знать, как удалить, используя COMMIT и WITH HOLD