код ошибки [20001]; ORA-20001: ERROR-ORA-01722: неверный номер ORA-06512 - PullRequest
0 голосов
/ 08 мая 2020

Я хочу вставить данные в таблицу. Два из всех столбцов относятся к типу даты. Но я получил этот код ошибки [20001]; ORA-20001: ERROR-ORA-01722: недопустимый номер ORA-06512

это моя процедура хранения

PROCEDURE PR_SP_FAHMI (P_T_TABLE_UPLD_EXCEL IN PARAMS.EXCEL)
   is 
  P_LOGID VARCHAR2(255);
BEGIN
BEGIN
  INSERT INTO 
  PARAMS.EMPTY
  SELECT 
  C.PARA_OBJT_GROUP            ,
  C.PARA_OBJT_CODE             ,
  C.PARA_PROD_MATRIX_ID        ,
  C.PARA_PROD_CHANNEL_ID       ,
  C.PARA_PROD_SALES_GROUP_ID   ,
  C.PARA_CUST_GROUP            ,
  C.PARA_SLS_THROUGH_ID        ,
  C.ACTIVE                     ,
  C.LOGID                      ,
  TO_CHAR (C.CREATED_DATE,'dd/MM/yyyy HH24:MI:SS')  ,
  C.CREATED_BY                 ,
  TO_CHAR (C.MODIFIED_DATE,'dd/MM/yyyy HH24:MI:SS')              ,
  C.MODIFIED_BY                ,
  C.PARA_APPL_TAG
  FROM TABLE(P_T_TABLE_UPLD_EXCEL) C;
  EXCEPTION
        --  WHEN NO_DATA_FOUND THEN
    WHEN DUP_VAL_ON_INDEX THEN
                NULL;
            WHEN OTHERS THEN
                RAISE_APPLICATION_ERROR(-20001, 'ERROR-' || SQLERRM);
        END;
END PR_SP_FAHMI;

это мой тип:

CREATE OR REPLACE TYPE EXCEL AS TABLE OF PARAMS.T_OBJECT_FROM_EXCEL

this это мой объект:

CREATE OR REPLACE TYPE "T_OBJECT_FROM_EXCEL" FORCE AS OBJECT (
  para_objt_group            VARCHAR2(3),
  para_objt_code             VARCHAR2(3),
  para_prod_matrix_id        VARCHAR2(5),
  para_prod_channel_id       VARCHAR2(5),
  para_prod_sales_group_id   VARCHAR2(5),
  para_cust_group            VARCHAR2(3),
  para_sls_through_id        VARCHAR2(2),
  active                     NUMBER(1),
  logid                      NUMBER,
  created_date               VARCHAR2(255),
  created_by                 VARCHAR(20),
  modified_date              VARCHAR2(255),
  modified_by                VARCHAR(20),
  para_appl_tag              VARCHAR(8)
)

1 Ответ

0 голосов
/ 08 мая 2020

C.MODIFIED_DATE и C.CREATED_DATE в вашем типе varchar2, и чтобы вставить его в какой-нибудь столбец date, вам нужно преобразовать его в дату следующим образом:

TO_DATE (C.MODIFIED_DATE,'dd/MM/yyyy HH24:MI:SS')
-- same for C.CREATED_DATE

Убедитесь, что формат даты, использованный в приведенном выше выражении, соответствует формату строки (C.MODIFIED_DATE) в вашем типе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...