zoukankan      html  css  js  c++  java
  • 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);
    魔兽就是毒瘤,大家千万不要玩。
  • 相关阅读:
    linux 中的./configuration --prefix=安装路径 的用法(指定源码安装方式的安装路基)
    深入了解Activiti工作流流程定义
    ResultCode 自定义错误状态码
    maven和gradle对比
    js中的prototype原型解析
    json字符串的标准格式
    迷茫于Hibernate/JPA的人提一些建议。
    ModelDriven 和 Preparable 拦截器
    Spring中bean的scope
    spring配置文件详解以及beans:beans标签
  • 原文地址:https://www.cnblogs.com/tracy/p/1763229.html
Copyright © 2011-2022 走看看