ora 01861 литерал не соответствует строке формата при вставке значений с использованием XML через хранимую процедуру - PullRequest
0 голосов
/ 10 апреля 2019

Что я делаю, так это вставляю данные в таблицы, используя хранимую процедуру в формате XML.Вот то, что генерирует мой XML.

<clsXmlAttributes><displayFieldName>STRUCTURE_NAME</displayFieldName><fieldAliases><OBJECTID>OBJECTID</OBJECTID><STRUCTURE_NAME>STRUCTURE_NAME</STRUCTURE_NAME><INVENTORY_STATUS_CODE>INVENTORY_STATUS_CODE</INVENTORY_STATUS_CODE><RJ_SAPID>RJ_SAPID</RJ_SAPID><RJ_COLO_SAPID>RJ_COLO_SAPID</RJ_COLO_SAPID><RJ_NETWORK_ENTITY_ID>RJ_NETWORK_ENTITY_ID</RJ_NETWORK_ENTITY_ID><RJ_MAINTENANCE_ZONE_CODE>RJ_MAINTENANCE_ZONE_CODE</RJ_MAINTENANCE_ZONE_CODE><RJ_SITE_NAME>RJ_SITE_NAME</RJ_SITE_NAME><RJ_SITE_ADDRESS>RJ_SITE_ADDRESS</RJ_SITE_ADDRESS><RJ_STRUCTURE_TYPE>RJ_STRUCTURE_TYPE</RJ_STRUCTURE_TYPE><TYPE_NAME>TYPE_NAME</TYPE_NAME><RJ_LAST_MODIFIED_BY>RJ_LAST_MODIFIED_BY</RJ_LAST_MODIFIED_BY><RJ_LAST_MODIFIED_DATE>RJ_LAST_MODIFIED_DATE</RJ_LAST_MODIFIED_DATE><RJ_STATUS>RJ_STATUS</RJ_STATUS><PLACEMENT_DATE>PLACEMENT_DATE</PLACEMENT_DATE><RJ_CITY_CODE>RJ_CITY_CODE</RJ_CITY_CODE><RJ_R4G_STATE_CODE>RJ_R4G_STATE_CODE</RJ_R4G_STATE_CODE><RJ_DISTRICT_CODE>RJ_DISTRICT_CODE</RJ_DISTRICT_CODE><RJ_TALUK_CODE>RJ_TALUK_CODE</RJ_TALUK_CODE><RJ_COMMISSIONING_DATE>RJ_COMMISSIONING_DATE</RJ_COMMISSIONING_DATE><RJ_INSERVICE_DATE>RJ_INSERVICE_DATE</RJ_INSERVICE_DATE><RJ_JC_CODE>RJ_JC_CODE</RJ_JC_CODE><RJ_JIOPOINT_SAPCODE>RJ_JIOPOINT_SAPCODE</RJ_JIOPOINT_SAPCODE><RJ_COMPANY_CODE_1>RJ_Company_Code_1</RJ_COMPANY_CODE_1><RJ_COMPANY_CODE_2>RJ_Company_Code_2</RJ_COMPANY_CODE_2></fieldAliases><fields><name>OBJECTID</name><type>esriFieldTypeOID</type><alias>OBJECTID</alias></fields><fields><name>STRUCTURE_NAME</name><type>esriFieldTypeString</type><alias>STRUCTURE_NAME</alias><length>20</length></fields><fields><name>INVENTORY_STATUS_CODE</name><type>esriFieldTypeString</type><alias>INVENTORY_STATUS_CODE</alias><length>4</length></fields><fields><name>RJ_SAPID</name><type>esriFieldTypeString</type><alias>RJ_SAPID</alias><length>18</length></fields><fields><name>RJ_COLO_SAPID</name><type>esriFieldTypeString</type><alias>RJ_COLO_SAPID</alias><length>600</length></fields><fields><name>RJ_NETWORK_ENTITY_ID</name><type>esriFieldTypeString</type><alias>RJ_NETWORK_ENTITY_ID</alias><length>18</length></fields><fields><name>RJ_MAINTENANCE_ZONE_CODE</name><type>esriFieldTypeString</type><alias>RJ_MAINTENANCE_ZONE_CODE</alias><length>25</length></fields><fields><name>RJ_SITE_NAME</name><type>esriFieldTypeString</type><alias>RJ_SITE_NAME</alias><length>150</length></fields><fields><name>RJ_SITE_ADDRESS</name><type>esriFieldTypeString</type><alias>RJ_SITE_ADDRESS</alias><length>255</length></fields><fields><name>RJ_STRUCTURE_TYPE</name><type>esriFieldTypeString</type><alias>RJ_STRUCTURE_TYPE</alias><length>50</length></fields><fields><name>TYPE_NAME</name><type>esriFieldTypeString</type><alias>TYPE_NAME</alias><length>20</length></fields><fields><name>RJ_LAST_MODIFIED_BY</name><type>esriFieldTypeString</type><alias>RJ_LAST_MODIFIED_BY</alias><length>50</length></fields><fields><name>RJ_LAST_MODIFIED_DATE</name><type>esriFieldTypeDate</type><alias>RJ_LAST_MODIFIED_DATE</alias><length>36</length></fields><fields><name>RJ_STATUS</name><type>esriFieldTypeString</type><alias>RJ_STATUS</alias><length>50</length></fields><fields><name>PLACEMENT_DATE</name><type>esriFieldTypeDate</type><alias>PLACEMENT_DATE</alias><length>36</length></fields><fields><name>RJ_CITY_CODE</name><type>esriFieldTypeString</type><alias>RJ_CITY_CODE</alias><length>4</length></fields><fields><name>RJ_R4G_STATE_CODE</name><type>esriFieldTypeString</type><alias>RJ_R4G_STATE_CODE</alias><length>2</length></fields><fields><name>RJ_DISTRICT_CODE</name><type>esriFieldTypeString</type><alias>RJ_DISTRICT_CODE</alias><length>4</length></fields><fields><name>RJ_TALUK_CODE</name><type>esriFieldTypeString</type><alias>RJ_TALUK_CODE</alias><length>4</length></fields><fields><name>RJ_COMMISSIONING_DATE</name><type>esriFieldTypeDate</type><alias>RJ_COMMISSIONING_DATE</alias><length>36</length></fields><fields><name>RJ_INSERVICE_DATE</name><type>esriFieldTypeDate</type><alias>RJ_INSERVICE_DATE</alias><length>36</length></fields><fields><name>RJ_JC_CODE</name><type>esriFieldTypeString</type><alias>RJ_JC_CODE</alias><length>25</length></fields><fields><name>RJ_JIOPOINT_SAPCODE</name><type>esriFieldTypeString</type><alias>RJ_JIOPOINT_SAPCODE</alias><length>30</length></fields><fields><name>RJ_COMPANY_CODE_1</name><type>esriFieldTypeSmallInteger</type><alias>RJ_Company_Code_1</alias></fields><fields><name>RJ_COMPANY_CODE_2</name><type>esriFieldTypeSmallInteger</type><alias>RJ_Company_Code_2</alias></fields><features><attributes><OBJECTID>11902657</OBJECTID><STRUCTURE_NAME>TWR:CELL::11902657</STRUCTURE_NAME><INVENTORY_STATUS_CODE>IPL</INVENTORY_STATUS_CODE><RJ_SAPID>I-AP-ABEK-ENB-I001</RJ_SAPID><RJ_COLO_SAPID>I-AP-ABEK-ENB-I001</RJ_COLO_SAPID><RJ_NETWORK_ENTITY_ID>INAPABEKABEKTW6001</RJ_NETWORK_ENTITY_ID><RJ_MAINTENANCE_ZONE_CODE>INTLDCPL01</RJ_MAINTENANCE_ZONE_CODE><RJ_SITE_NAME>Adloor</RJ_SITE_NAME><RJ_SITE_ADDRESS>SURVEY NO.121, ADLOOR VILLAGE, KAMAREDDY MANDAL, NIZAMABAD DIST.Telangana 503111</RJ_SITE_ADDRESS><RJ_STRUCTURE_TYPE>eNodeB</RJ_STRUCTURE_TYPE><TYPE_NAME>CELLULAR</TYPE_NAME><RJ_LAST_MODIFIED_BY>IN\maddirevula.srujana</RJ_LAST_MODIFIED_BY><RJ_LAST_MODIFIED_DATE>1542473349000</RJ_LAST_MODIFIED_DATE><RJ_STATUS>RFC</RJ_STATUS><PLACEMENT_DATE>1542473348000</PLACEMENT_DATE><RJ_CITY_CODE>ABEK</RJ_CITY_CODE><RJ_R4G_STATE_CODE>TG</RJ_R4G_STATE_CODE><RJ_DISTRICT_CODE>KMDD</RJ_DISTRICT_CODE><RJ_TALUK_CODE>SSNR</RJ_TALUK_CODE><RJ_COMMISSIONING_DATE /><RJ_INSERVICE_DATE /><RJ_JC_CODE>I-AP-KMDD-JCO-0001</RJ_JC_CODE><RJ_JIOPOINT_SAPCODE /><RJ_COMPANY_CODE_1>6000</RJ_COMPANY_CODE_1><RJ_COMPANY_CODE_2 /></attributes></features></clsXmlAttributes>

Из исследований я могу предположить, что параметры даты генерируются в целых числах в приведенном выше XML.как показано ниже, в результате чего литерал не совпадает с ошибкой строки формата

<PLACEMENT_DATE>1542473348000</PLACEMENT_DATE>

Ниже представлена ​​моя хранимая процедура, которую я использую для вставки данных в таблицу.

PROCEDURE sp_insertinfo_xml ( strxml IN CLOB, 
                         pcnt            VARCHAR2, 
                         psapid          VARCHAR2, 
                         pinventory_type VARCHAR2, 
                         pos IN NUMBER ) AS 
               BEGIN 
IF(pos = 1) THEN 
  BEGIN 
    INSERT INTO test_14032019 
                ( 
                            objectid, 
                            rj_sapid, 
                            rj_colo_sapid, 
                            rj_network_entity_id, 
                            structure_name, 
                            inventory_status_code, 
                            rj_maintenance_zone_code, 
                            rj_site_name, 
                            rj_site_address, 
                            rj_structure_type, 
                            type_name, 
                            rj_last_modified_by, 
                            rj_last_modified_date, 
                            rj_status, 
                            inventory_type, 
                            cnt, 
                            inputsapid, 
                            bothcolorjsapid, 
                            equpcnt, 
                            PLACEMENT_DATE, 
                            rj_city_code, 
                            rj_r4g_state_code, 
                            rj_district_code, 
                            rj_taluk_code, 
                            RJ_COMMISSIONING_DATE, 
                            RJ_INSERVICE_DATE , 
                            rj_jc_code, 
                            rj_jiopoint_sapcode, 
                            rj_company_code_1, 
                            rj_company_code_2 
                ) 
    SELECT objectid, 
           rj_sapid, 
           rj_colo_sapid, 
           rj_network_entity_id, 
           structure_name, 
           inventory_status_code, 
           rj_maintenance_zone_code, 
           rj_site_name, 
           rj_site_address, 
           rj_structure_type, 
           type_name, 
           rj_last_modified_by, 
           rj_last_modified_date, 
           rj_status, 
           pinventory_type, 
           pcnt, 
           psapid, 
           bothcolorjsapid, 
           '' , 
           PLACEMENT_DATE, 
           rj_city_code, 
           rj_r4g_state_code, 
           rj_district_code, 
           rj_taluk_code, 
           RJ_COMMISSIONING_DATE, 
           RJ_INSERVICE_DATE , 
           rj_jc_code, 
           rj_jiopoint_sapcode, 
           rj_company_code_1, 
           rj_company_code_2 
    FROM   XMLTABLE( 'clsXmlAttributes/features/attributes' passing xmltype('' 
                  || strxml 
                  || '') COLUMNS --describe columns and path to them: 
           objectid VARCHAR2(900) path './OBJECTID', rj_sapid VARCHAR2(900) path './RJ_SAPID', rj_colo_sapid VARCHAR2(900) path './RJ_COLO_SAPID', rj_network_entity_id VARCHAR2(900) path './RJ_NETWORK_ENTITY_ID', structure_name VARCHAR2(900) path './STRUCTURE_NAME', inventory_status_code VARCHAR2(900) path './INVENTORY_STATUS_CODE', rj_maintenance_zone_code VARCHAR2(900) path './RJ_MAINTENANCE_ZONE_CODE', rj_site_name VARCHAR2(900) path './RJ_SITE_NAME', rj_site_address VARCHAR2(900) path './RJ_SITE_ADDRESS', rj_structure_type VARCHAR2(900) path './RJ_STRUCTURE_TYPE', type_name VARCHAR2(900) path './TYPE_NAME', rj_last_modified_by VARCHAR2(900) path './RJ_LAST_MODIFIED_BY', rj_last_modified_date VARCHAR2(900) path './RJ_LAST_MODIFIED_DATE', rj_status VARCHAR2(900) path './RJ_STATUS', bothcolorjsapid VARCHAR2(900) path './BOTHCOLORJSAPID',
           PLACEMENT_DATE VARCHAR2(900) PATH './PLACEMENT_DATE', 
           rj_city_code VARCHAR2(900) path './RJ_CITY_CODE', rj_r4g_state_code VARCHAR2(900) path './RJ_R4G_STATE_CODE', rj_district_code VARCHAR2(900) path './RJ_DISTRICT_CODE', rj_taluk_code VARCHAR2(900) path './RJ_TALUK_CODE',
           RJ_COMMISSIONING_DATE VARCHAR2(900) PATH './RJ_COMMISSIONING_DATE', 
           RJ_INSERVICE_DATE VARCHAR2(900) PATH './RJ_INSERVICE_DATE', 
           rj_jc_code VARCHAR2(900) path './RJ_JC_CODE', rj_jiopoint_sapcode VARCHAR2(900) path './RJ_JIOPOINT_SAPCODE', rj_company_code_1 VARCHAR2(900) path './RJ_COMPANY_CODE_1', rj_company_code_2 VARCHAR2(900) path './RJ_COMPANY_CODE_2' ) xmlt;

  END;

Подскажите, пожалуйста, как я могу решить эту проблему

...