DECLARE
v_count NUMBER;
v_field_list varchar2(10000);
BEGIN
-- 创建临时表
EXECUTE IMMEDIATE 'CREATE TABLE TMP_DC_H_COPY5 AS SELECT * FROM TCGK.DC_H WHERE OBJECTID > 2929071';
-- 获取字段列表(排除OBJECTID)
SELECT LISTAGG(column_name, ',') WITHIN GROUP (ORDER BY column_id)
INTO v_field_list
FROM all_tab_columns
WHERE owner = 'TCGK'
AND table_name = 'DC_H'
AND column_name != 'OBJECTID';
-- 动态插入数据
--EXECUTE IMMEDIATE 'INSERT INTO TCGK.DC_H33 (' || v_field_list || ')
-- SELECT ' || v_field_list || ' FROM TMP_DC_H_COPY4';
-- 验证记录数
--EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM TCGK.DC_H33' INTO v_count;
--DBMS_OUTPUT.PUT_LINE('已插入记录数: ' || v_count);
-- 清理临时表
--EXECUTE IMMEDIATE 'DROP TABLE TMP_DC_H_COPY4 PURGE';
EXECUTE IMMEDIATE 'delete from TCGK.DC_H WHERE OBJECTID > 2929071';
EXECUTE IMMEDIATE 'INSERT INTO TCGK.DC_H (' || v_field_list || ')
SELECT ' || v_field_list || ' FROM TMP_DC_H_COPY5';
EXECUTE IMMEDIATE 'DROP TABLE TMP_DC_H_COPY5 PURGE';
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('错误: ' || SQLERRM);
END;