Как вставить объект Sdo_Geometry в оракул

У меня есть объектная переменная SDO_GEOMETRY, которая извлекает данные типа sdo_geometry с карты. Я должен вставить geoloc.

я делаю что-то вроде этого

orcl.CommandText = "insert into table1 (id,geoloc) values(:id,:geoloc)";
orcl.SetBindByName(true);
orcl.SetArrayCount(ArrayCount);
orcl.AddParameter(":ID",OracleDbType.Int32,ParameterDirection.Input,Idlist.ToArray());
orcl.AddParameter(":GEOLOC",OracleDbType.Object,ParameterDirection.Input,ObjectList.ToArray());
orcl.ExecuteNonQuery();

Метод добавления параметра

public void AddParameter(string parameterName, OracleDbType _type,ParameterDirection dValue, Array _value)
{
   (OracleCommand)cmd.Parameters.Add(new OracleParameter(parameterName, _type, _value, dValue));
}

Я принимаю эту ошибку:

Неверная привязка параметра. Имя параметра: :GEOLOC

Как мне поступить?


person Community    schedule 23.03.2016    source источник
comment
Вы можете попробовать внедрить объект SDO_GEOMETRY в SQL и просто привязать значения, которые вы хотите передать в этот объект: INSERT INTO table1 ( id, geoloc ) VALUES( :id, SDO_GEOMETRY( 2001, 8307, SDO_POINT_TYPE(:lat,:long,NULL), NULL, NULL) )   -  person MT0    schedule 23.03.2016
comment
Спасибо за ответ. Однако мне нужно вставить таблицу независимо от типа объекта. Поэтому я должен предоставить параметрический массив объектов sdo_geometr.   -  person    schedule 28.03.2016
comment
Вы передали список‹T› как для параметров ID, так и для параметров GEOLOC. Что такое ObjectList? Если он не содержит UDT, которые наследуются от IOracleCustomType , как показано здесь Oracle их не поймет. Вам нужно будет создать свой собственный UDT, подобный тому, который показан здесь, или преобразовать свою геометрию в текст, передать его в Oracle как параметр CLOB и используйте [FROM_WKTGEOMETRY](SDO_UTIL.FROM_WKTGEOMETRY) в своем запросе для анализа текста в геометрию   -  person Panagiotis Kanavos    schedule 18.10.2018