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;