BEGIN
DBMS_APPLY_ADM.SET_DML_HANDLER(
object_name => schema_owner.table_name,
object_type => 'TABLE',
operation_name => 'DEFAULT',
error_handler => false,
user_procedure => 'my_custom_handler',
apply_database_link => NULL,
apply_name => 'my_apply',
assemble_lobs => true
);
END;
ORA-06550: line 14, column 1: PLS-00103: Encountered the symbol "CREATE"More Details: https://docs.oracle.com/error-help/db/ora-06550
CREATE OR REPLACE PROCEDURE my_custom_handler (in_any IN SYS.ANYDATA)
IS
lcr SYS.LCR$_ROW_RECORD;
rc PLS_INTEGER;
res NUMBER;
sql_stmt CLOB;
BEGIN
rc := in_any.GETOBJECT(lcr);
-- Generate SQL from row LCR
DBMS_LOB.CREATETEMPORARY(sql_stmt, TRUE);
lcr.GET_ROW_TEXT(sql_stmt);
INSERT INTO my_temp_table
(TIMESTAMP, LCR,SOURCE_DATABASE_NAME, COMMAND_TYPE, OBJECT_OWNER, OBJECT_NAME,
TAG, TRANSACTION_ID, SCN, COMMIT_SCN, OLD_VALUES, NEW_VALUES, SQL_STMT)
VALUES
(SYSDATE, lcr, lcr.GET_SOURCE_DATABASE_NAME(), lcr.GET_COMMAND_TYPE(), lcr.GET_OBJECT_OWNER(), lcr.GET_OBJECT_NAME(),
lcr.GET_TAG(), lcr.GET_TRANSACTION_ID(), lcr.GET_SCN(), lcr.GET_COMMIT_SCN, lcr.GET_VALUES('old'), lcr.GET_VALUES('new'), sql_stmt);
DBMS_LOB.FREETEMPORARY(sql_stmt);
END;
CREATE TABLE table_with_clob(
ID NUMBER(4) primary KEY,
test_column2 CLOB
);
INSERT INTO table_with_clob VALUES (1, to_clob('clob clob clob'));
COMMIT;
DECLARE
row_lcr SYS.LCR$_ROW_RECORD;
CURSOR mycursor
IS
SELECT lcr FROM my_temp_table WHERE
commit_scn = XXX
ORDER BY scn ASC, TIMESTAMP ASC;
BEGIN
FOR row_lcr IN mycursor
LOOP
row_lcr.lcr.execute(true);
END LOOP;
END;
/