Sql 在sdo_geomety数据类型列中插入记录时缺少右括号
我已经在Oracle11g中创建了一个表Sql 在sdo_geomety数据类型列中插入记录时缺少右括号,sql,oracle,oracle11g,oracle-spatial,Sql,Oracle,Oracle11g,Oracle Spatial,我已经在Oracle11g中创建了一个表 CREATE TABLE "SYSTEM"."CN_PLOT_OVERLAP" ( "ID" NUMBER(6,0), "UNIT_CODE" VARCHAR2(2 BYTE), "SEASON_CNTRL" NUMBER(2,0), "RYOT_CODEE" VARCHAR2(9 BYTE), "SHARE_OR_PERC_VAL" NUMBER(1,2), "PLOT_NO" VAR
CREATE TABLE "SYSTEM"."CN_PLOT_OVERLAP"
( "ID" NUMBER(6,0),
"UNIT_CODE" VARCHAR2(2 BYTE),
"SEASON_CNTRL" NUMBER(2,0),
"RYOT_CODEE" VARCHAR2(9 BYTE),
"SHARE_OR_PERC_VAL" NUMBER(1,2),
"PLOT_NO" VARCHAR2(15 BYTE),
"TOTAL_AREA" BINARY_FLOAT,
"LAT1" BINARY_FLOAT,
"LNG1" BINARY_FLOAT,
"LAT2" BINARY_FLOAT,
"LNG2" BINARY_FLOAT,
"LAT3" BINARY_FLOAT,
"LNG3" BINARY_FLOAT,
"LAT4" BINARY_FLOAT,
"LNG4" BINARY_FLOAT,
"POLYGON" "SDO_GEOMETRY",
CONSTRAINT "ID_PK" PRIMARY KEY ("ID")
并且已经插入了需要多边形的值。现在,当我为多边形插入值时,它显示一个错误
**SQL Error: ORA-00907: missing right parenthesis
1. 00000 - "missing right parenthesis"**
您的
更新的第一行中的1
是什么?它不应该在那里。以下是创建SDO\u几何体的方法
对象:
update cn_plot_overlap set polygon =
MDSYS.sdo_geometry(
2003,
4326,
NULL,
sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(27.79094,80.5275449,
27.7912333,80.527696,
27.79085,80.5285083,
27.790571,80.5283216,
27.79094,80.5275449
)
);
我也不建议在SYS
用户模式中创建任何对象。与前面的答案一样,我也不理解更新中“1”的含义。除非您希望它是要填充多边形列的对象的标识符。如果是这样,那么您需要编写如下所示的更新
请注意,坐标也有问题:Oracle(与几乎所有其他人一样)希望坐标以(X,Y)顺序提供,即以(经度,纬度)为单位。如前所述,您的农场位于北冰洋的某个地方!如果您正确填写坐标,它将正确位于印度:
update cn_plot_overlap set polygon =
sdo_geometry(
2003,
4326,
NULL,
sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(
80.5275449,27.79094,
80.527696,27.7912333,
80.5285083,27.79085,
80.5283216,27.790571,
80.5275449,27.79094
)
)
where id = 1;
如果要使用表中所有行的LATn、LGN列中的可用值更新多边形列,请使用以下语法:
update cn_plot_overlap set polygon =
sdo_geometry(
2003,
4326,
NULL,
sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(
lng1,lat1,
lng2,lat2,
lng3,lat3,
lng4,lat4,
lng1,lat1
)
);
这假设LATn、LGN列表示预期序列中的角(即逆时针)。如果不是这样,只需颠倒坐标顺序即可
最后,正如前面提到的:永远,永远,永远,永远不要在任何系统模式中创建对象(表)!!!这是未来麻烦的可靠保证。在您自己的模式中创建表
update cn_plot_overlap set polygon =
sdo_geometry(
2003,
4326,
NULL,
sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(
lng1,lat1,
lng2,lat2,
lng3,lat3,
lng4,lat4,
lng1,lat1
)
);