Oracle Bind массив sdo_geometry в C # с оракулом Доступ к данным - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть много объектов sdo_gemetry c #, встроенных в UDT в C #, и я хочу вставить их в таблицу ( SHAPE_SDO ), имеющую 2 столбца cms как varchar и POLY как SDO_GEOMETRY .требуется длительное время , чтобы вставить их в цикл for.Я решил связать их в массив, но получаю эту ошибку:

ORA-29875: сбой при выполнении подпрограммы ODCIINDEXINSERT ORA-13354: неверное смещение в ELEM_INFO_ARRAY ORA-06512: at "MDSYS.SDO_INDEX_METHOD_10I ", строка 720 ORA-06512: в" MDSYS.SDO_INDEX_METHOD_10I ", строка 225 ORA-06512: в" GIS.FUNCTION1 ", строка 7

, и эта ошибка повторяется столько же, сколько и числомоего массива;

и это мой код:

    cmd = new OracleCommand()
    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "insert into SHAPE_SDO (CMS,POLY) values (:CMS,:POLY)";
    cmd.Parameters.Clear();
    cmd.ArrayBindCount = allRecord.Count;

    cmd.Parameters.Add(":CMS", OracleDbType.Varchar2, CMS.ToArray(), ParameterDirection.Input);

    OracleParameter oracle_SDO_Param = new OracleParameter();
            oracle_SDO_Param.OracleDbType = OracleDbType.Object;
            oracle_SDO_Param.UdtTypeName = "MDSYS.SDO_GEOMETRY";
            oracle_SDO_Param.ParameterName = "POLY";
            oracle_SDO_Param.Value = POLY.ToArray();
            cmd.Parameters.Add(oracle_SDO_Param);
...