• Miley's Oracle讲堂第三课:如何在Oracle中使用对象表存储数据.


       在实际工作中,业务涉及需要记录物流行程中出错的数据以方便分析问题,需要把原始数据保留在对象表中。打比方说今天有个司机把今天手持设备上的数据上传到服务器,但是报错了服务器端。那么我们可以存储下来上传的原始数据已进行分析。
    创建对象表的脚本如下,关键部位已经突出显示。
    在这里需要注意的是ROUTE_STOPS_ST
    类似此类ST结尾的都会在Oracle中以表的形式存在。
    这样一个上传的分级式记录只会以一条记录的形式存在TMS_OBJ_ROUTE_DATA中,在toad中可以非常清晰的看到其中的数据.PS:别的软件应该也能显示数据表数据,笔者只用toad因为某种原因。
    希望本文能对大家今后使用对象表有所帮助。
     
    DROP TABLE TMS.TMS_OBJ_ROUTE_DATA CASCADE CONSTRAINTS;

    CREATE TABLE TMS.TMS_OBJ_ROUTE_DATA
    (
      ROUTE_HEADER_COL,
      ROUTE_STOPS_COL      TMS.ROUTE_STOPS,
      PO_COL               TMS.POS,
      STOP_DETAILS_COL  TMS.STOP_DETAILS,
      PO_STOP_DETAILS_COL  TMS.PO_STOP_DETAILS,
      EXPT_TEXT_COL        VARCHAR2(512 BYTE),
      EXPT_CODE_COL        VARCHAR2(10 BYTE),
      SVR_DATE_COL         DATE,
      DEVICE_ID_COL        VARCHAR2(20 BYTE),
      INSTANCEID_COL       INTEGER
    )
    NESTED TABLE ROUTE_STOPS_COL STORE AS ROUTE_STOPS_ST,
    NESTED TABLE PO_COL STORE AS POS_ST,
    NESTED TABLE STOP_DETAILS_COL STORE AS STOP_DETAILS_ST,
    NESTED TABLE PO_STOP_DETAILS_COL STORE AS PO_STOP_DETAILS_ST,
    NESTED TABLE SETTINGS_COL STORE AS SETTINGS_ST

    TABLESPACE TMSDATA
    PCTUSED    0
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          104K
                NEXT             104K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
    LOGGING
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    MONITORING;

    其中绿色的部分都是Collection types,是由Object types组成的。

    具体脚本(节选PO_STOP_DETAILS,POS)如下:

    CREATE OR REPLACE TYPE TMS.PO_STOP_DETAIL AS OBJECT
    (
      stop_detail_id INTEGER,
      po_id VARCHAR(10),
      stop_id INTEGER,
      delete_flag CHAR(1),
      sync_statuc CHAR(1)
    )
    /

    CREATE OR REPLACE TYPE TMS.PO_STOP_DETAILS AS
      TABLE OF po_stop_detail
    /

    CREATE OR REPLACE TYPE TMS.PO AS OBJECT
    (
      stop_id INTEGER,
      po_id VARCHAR(10),
      delete_flag CHAR(1),
      weight INTEGER,
      weight_uom VARCHAR(3),
      sync_statuc CHAR(1)
    )
    /
    CREATE OR REPLACE TYPE TMS.POS AS
      TABLE OF po
    /

    插入此类记录也比较简单,类似如下脚本:
    INSERT INTO tms_obj_route_data
                      VALUES (p_route_data.route_header, p_route_data.route_stops,
                              p_route_data.stop_pos, p_route_data.stop_details,
                              p_route_data.po_stop_details,
                              'Exception code can not be null when the status is E',
                              v_instance_id);
    魔兽就是毒瘤,大家千万不要玩。
  • 相关阅读:
    xp 安装 win7 64
    局域网内传输文件速度慢
    安全和共享设置
    vs2005无法启动
    dos快速通道
    xp 共享 guest
    Java菜题
    Java序列化总结(最全)
    Bitset改进你的程序质量
    Java反射方法总结
  • 原文地址:https://www.cnblogs.com/tracy/p/1763229.html
Copyright © 2020-2023  润新知