大赵传奇

GIS解决方案,webgis , 桌面、数据、服务--QQ276605216

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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;

 

posted on 2025-04-30 13:49  赵长青  阅读(11)  评论(0)    收藏  举报