#oracle
#Oracle
Вопрос:
Я хочу вставить sdo_geometry в свою таблицу, но не могу. Я не знаю, как вставить значение SDO_GEOMETRY. Я уверен, что имена столбцов указаны правильно.
Я попытался использовать эти два источника: документы Oracle, пример документов Oracle
Oracle выдает эту ошибку:
ORA-00936: выражение миссии
Строка скрипта 8, строка инструкции 8, столбец 22
INSERT INTO HATYONETIM.MEVCUT_RAYLI_SISTEM_HATLARI(ID, ISIM_HAT, ISIM_KISA, TUR_HAT, ISIM_KURUM, MI_STYLE, MI_PRINX, GEOLOC)
VALUES(13, 'Name', 'M', 'Metro', 'Metro', null, 13,
MDSYS.SDO_GEOMETRY(2002,
8307,
0,
0,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(NUMBER(1, 2, 1)),
MDSYS.SDO_ORDINATE_ARRAY(NUMBER(28.802437, 41.07247, 28.801767, 41.072785, 28.799637, 41.074663, 28.799177, 41.075009, 28.798757, 41.075232, 28.798107, 41.075481, 28.797488, 41.075631, 28.796882, 41.075683, 28.796348, 41.075683, 28.79575, 41.075609, 28.79198, 41.074751, 28.790744, 41.074489, 28.79002, 41.07438, 28.789173, 41.074316, 28.788104, 41.074356, 28.78653, 41.074482, 28.783164, 41.07483, 28.781041, 41.075094, 28.780753, 41.075152, 28.779255, 41.075542, 28.778821, 41.075703, 28.778291, 41.075918, 28.777854, 41.076114, 28.772736, 41.078684, 28.772297, 41.078885, 28.771977, 41.079006, 28.771762, 41.079072, 28.771488, 41.079147, 28.771177, 41.079212, 28.770589, 41.079292, 28.767417, 41.079622, 28.767263, 41.07963))))
Спасибо за вашу помощь. с наилучшими пожеланиями.
Ответ №1:
Конструктор SDO_GEOMETRY
типа объекта принимает 5 аргументов, но вы передаете 7.
Oracle Spatial и Graph определяет тип объекта
SDO_GEOMETRY
как:CREATE TYPE sdo_geometry AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY, SDO_ORDINATES SDO_ORDINATE_ARRAY );
Уменьшите количество аргументов до 5, поместив ваши 3-й, 4-й и 5-й аргументы в SDO_POINT_TYPE
объект, и это сработает:
CREATE TABLE /*HATYONETIM.*/MEVCUT_RAYLI_SISTEM_HATLARI(
ID NUMBER,
ISIM_HAT VARCHAR2(20),
ISIM_KISA VARCHAR2(20),
TUR_HAT VARCHAR2(20),
ISIM_KURUM VARCHAR2(20),
MI_STYLE NUMBER,
MI_PRINX NUMBER,
GEOLOC MDSYS.SDO_GEOMETRY
);
INSERT INTO /*HATYONETIM.*/MEVCUT_RAYLI_SISTEM_HATLARI(
ID,
ISIM_HAT,
ISIM_KISA,
TUR_HAT,
ISIM_KURUM,
MI_STYLE,
MI_PRINX,
GEOLOC
) VALUES(
13,
'Name',
'M',
'Metro',
'Metro',
null,
13,
MDSYS.SDO_GEOMETRY(
2002,
8307,
MDSYS.SDO_POINT_TYPE(0,0,NULL),
MDSYS.SDO_ELEM_INFO_ARRAY( 1, 2, 1 ),
MDSYS.SDO_ORDINATE_ARRAY(
28.802437, 41.07247,
28.801767, 41.072785,
28.799637, 41.074663,
28.799177, 41.075009,
28.798757, 41.075232,
28.798107, 41.075481,
28.797488, 41.075631,
28.796882, 41.075683,
28.796348, 41.075683,
28.79575, 41.075609,
28.79198, 41.074751,
28.790744, 41.074489,
28.79002, 41.07438,
28.789173, 41.074316,
28.788104, 41.074356,
28.78653, 41.074482,
28.783164, 41.07483,
28.781041, 41.075094,
28.780753, 41.075152,
28.779255, 41.075542,
28.778821, 41.075703,
28.778291, 41.075918,
28.777854, 41.076114,
28.772736, 41.078684,
28.772297, 41.078885,
28.771977, 41.079006,
28.771762, 41.079072,
28.771488, 41.079147,
28.771177, 41.079212,
28.770589, 41.079292,
28.767417, 41.079622,
28.767263, 41.07963
)
)
);
db<>скрипка здесь