SQL состояние [99999]; код ошибки [17059]; Не удалось преобразовать во внутреннее представление: - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть 8 списков переменных и я собираю их в переменную ls в следующем коде:

Workbook workbook = new Workbook("D:/excel file/Mapping Prod Matriks _Group Sales Commercial.xlsx");
com.aspose.cells.Worksheet worksheet = workbook.getWorksheets().get(0);
com.aspose.cells.Cells cells = worksheet.getCells();
Range displayRange = cells.getMaxDisplayRange();
List<String> ParaObjGroup = new ArrayList<String>();
List<String> ParaObjCode = new ArrayList<String>();
List<String> ParaProdMatrixId = new ArrayList<String>();
List<String> ParaProdChannelId = new ArrayList<String>();
List<String> ParaProdSalesGroupId = new ArrayList<String>();
List<String> ParaCustGroup = new ArrayList<String>();
List<String> ParaSlsThroughId = new ArrayList<String>();
List<Integer> Active = new ArrayList<Integer>();

for(int row= displayRange.getFirstRow()+1;row<displayRange.getRowCount();row++){
    ParaObjGroup.add(displayRange.get(row,1).getStringValue());
    ParaObjCode.add(displayRange.get(row,3).getStringValue());
    ParaProdMatrixId.add(displayRange.get(row,5).getStringValue());
    ParaProdChannelId.add(displayRange.get(row,7).getStringValue());
    ParaProdSalesGroupId.add(displayRange.get(row,9).getStringValue());
    ParaCustGroup.add(displayRange.get(row,11).getStringValue());
    ParaSlsThroughId.add(displayRange.get(row,13).getStringValue());
    Active.add(displayRange.get(row,14).getIntValue());
}
List<Object[]> ls = new ArrayList<Object[]>();
for(int i=0;i<ParaObjGroup.size();i++){
    ls.add(new Object[]{ParaObjGroup.get(i),ParaObjCode.get(i),ParaProdMatrixId.get(i),ParaProdChannelId.get(i),ParaProdSalesGroupId.get(i),ParaCustGroup.get(i),ParaSlsThroughId.get(i),Active.get(i)});
}
lovService.coba(ls);

И затем отправляю переменную ls в качестве параметра ввода в методе coba:

 @ServiceLog(schema = ConstantaVariable.DBDefinition_Var.PARAMS_DB_SCHEMA, sp = ConstantaVariable.PARAMSProcedure_VAR.PR_SP_FAHMI)
@Transactional(propagation=Propagation.REQUIRED, rollbackFor={Exception.class,SQLException.class})
public void coba(List<Object[]> lo){
    Map<String, Object> mapInputParameter = new LinkedHashMap<String, Object>();
    mapInputParameter.put("P_T_TABLE_UPLD_EXCEL", lo);
    ParamsService.getService().executeSPForInsertData(null,ConstantaVariable.PARAMSProcedure_VAR.PR_SP_FAHMI,mapInputParameter);
}

И приведенный ниже код является методом для выполнения хранимой процедуры. Я хочу, чтобы данные в переменной ls стали inputParameter

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {SQLException.class, Exception.class })
    public void executeSPForInsertData(DataSource ds,String procedureName,Map<String, Object> inputParameter){
        //PARAMS.PKG_PARA_UPLD_VAL.PR_SP_FAHMI
          if(ds==null) ds = paramsDataSourceBean;
          String parameterName = "P_T_TABLE_UPLD_EXCEL";
          SqlParameter[] parameterTypes = { new SqlParameter(parameterName, OracleTypes.ARRAY, "PARAMS.EXCEL") };

      SimpleJdbcCall jdbcCall = new SimpleJdbcCall(ds)
      .withSchemaName("PARAMS")
      .withCatalogName("PKG_PARA_UPLD_VAL")
      .withProcedureName("PR_SP_FAHMI")
      .withoutProcedureColumnMetaDataAccess()
      .declareParameters(parameterTypes);

     jdbcCall.execute(inputParameter);

}

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

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                     
  FROM TABLE(P_T_TABLE_UPLD_EXCEL) C;
  EXCEPTION
            WHEN NO_DATA_FOUND THEN
                NULL;
            WHEN OTHERS THEN
                RAISE_APPLICATION_ERROR(-20001, 'ERROR-' || SQLERRM);
        END;
END PR_SP_FAHMI;

это тип объявления excel

CREATE OR REPLACE TYPE EXCEL AS TABLE OF PARAMS.T_OBJECT_FROM_EXCEL

и это объявление введите T_OBJECT_FROM_EXCEL

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(3),
  para_prod_sales_group_id   VARCHAR2(5),
  para_cust_group            VARCHAR2(3),
  para_sls_through_id        VARCHAR2(2),
  active                     NUMBER(1)
)

После запуска возникает ошибка, подобная этой:

CallableStatementCallback; uncategorized SQLException for SQL [{call PARAMS.PKG_PARA_UPLD_VAL.PR_SP_FAHMI(?)}]; SQL state [99999]; error code [17059]; Fail to convert to internal representation: [[Ljava.lang.Object;@20912767, [Ljava.lang.Object;@19b1ebe5, [Ljava.lang.Object;@6ff61490, [Ljava.lang.Object;@4c0335d, [Ljava.lang.Object;@666c211a, [Ljava.lang.Object;@44f1667e, [Ljava.lang.Object;@447ffd8e, [Ljava.lang.Object;@2edf98c4, [Ljava.lang.Object;@59a683e6, [Ljava.lang.Object;@431d9f05, [Ljava.lang.Object;@4db323af, [Ljava.lang.Object;@2bebde03, [Ljava.lang.Object;@a3cad7c, [Ljava.lang.Object;@15a1ad24, [Ljava.lang.Object;@296e2194, [Ljava.lang.Object;@7d5e90cb, [Ljava.lang.Object;@4b743fba, [Ljava.lang.Object;@3d03f309, [Ljava.lang.Object;@4e48f32a, [Ljava.lang.Object;@1754728d, [Ljava.lang.Object;@292c92f2, [Ljava.lang.Object;@2d6362fc, [Ljava.lang.Object;@57f7a5ab, [Ljava.lang.Object;@439daaab, [Ljava.lang.Object;@242fe33b, [Ljava.lang.Object;@43ef490c, [Ljava.lang.Object;@12a4d5ac, [Ljava.lang.Object;@3c818c4, [Ljava.lang.Object;@45d1edcc, [Ljava.lang.Object;@59530fe3, [Ljava.lang.Object;@5c382de5, [Ljava.lang.Object;@6c4d44af, [Ljava.lang.Object;@44d874b5, [Ljava.lang.Object;@5ed63a62, [Ljava.lang.Object;@42932892, [Ljava.lang.Object;@4b4cab63, [Ljava.lang.Object;@16881734]; nested exception is java.sql.SQLException: Fail to convert to internal representation: [[Ljava.lang.Object;@20912767, [Ljava.lang.Object;@19b1ebe5, [Ljava.lang.Object;@6ff61490, [Ljava.lang.Object;@4c0335d, [Ljava.lang.Object;@666c211a, [Ljava.lang.Object;@44f1667e, [Ljava.lang.Object;@447ffd8e, [Ljava.lang.Object;@2edf98c4, [Ljava.lang.Object;@59a683e6, [Ljava.lang.Object;@431d9f05, [Ljava.lang.Object;@4db323af, [Ljava.lang.Object;@2bebde03, [Ljava.lang.Object;@a3cad7c, [Ljava.lang.Object;@15a1ad24, [Ljava.lang.Object;@296e2194, [Ljava.lang.Object;@7d5e90cb, [Ljava.lang.Object;@4b743fba, [Ljava.lang.Object;@3d03f309, [Ljava.lang.Object;@4e48f32a, [Ljava.lang.Object;@1754728d, [Ljava.lang.Object;@292c92f2, [Ljava.lang.Object;@2d6362fc, [Ljava.lang.Object;@57f7a5ab, [Ljava.lang.Object;@439daaab, [Ljava.lang.Object;@242fe33b, [Ljava.lang.Object;@43ef490c, [Ljava.lang.Object;@12a4d5ac, [Ljava.lang.Object;@3c818c4, [Ljava.lang.Object;@45d1edcc, [Ljava.lang.Object;@59530fe3, [Ljava.lang.Object;@5c382de5, [Ljava.lang.Object;@6c4d44af, [Ljava.lang.Object;@44d874b5, [Ljava.lang.Object;@5ed63a62, [Ljava.lang.Object;@42932892, [Ljava.lang.Object;@4b4cab63, [Ljava.lang.Object;@16881734][SQL: 17059, 99999]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...