SDO_ORDINATE_ARRAY/Oracle Spatial 的最大大小
Max size of SDO_ORDINATE_ARRAY / Oracle Spatial
我正在使用此查询查询 Oracle Spatial 数据库(我遗漏了其他 1496 个坐标):
SELECT *
FROM pointsofinterest
WHERE Sdo_inside (pointsofinterest.geoloc,
Sdo_geometry(2003, 4326, NULL, Sdo_elem_info_array(1, 1003, 1),
Sdo_ordinate_array(4.237378120400001, 43.7904510498, 4.2357025146,
43.7882575989
,
4.232352256800001, 43.7882575989,
4.232352256800001, 43.7871589661))) = 'TRUE'
并得到这个错误:
ORA-00939: too many arguments for function
00939. 00000 - "too many arguments for function"
*Cause:
*Action: Error at Line: 4 Column: 27
SDO_GEOMETRY 对象包含 1500 个二维坐标。根据 http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_objrelschema.htm#SPATL489
这应该不是问题
当我去掉很多坐标的时候,没有报错。
我是否遗漏了有关 SDO_GEOMETRY 构造函数中最大坐标数的信息?为什么会出现此错误?
此错误来自 SQL 中的限制之一:可以传递给存储函数或过程的参数的最大数量,即 999 个参数(实际上是 1000 个,包括 return 值).这是因为 sdo_ordinate_array() 实际上是一个函数——sdo_ordinate_array 类型的构造函数。
正确的方法(也更有效)是将 sdo_geometry 对象作为绑定变量传递并在查询中使用它。完成的方式取决于您用来提交 select 声明的语言 ...
我正在使用此查询查询 Oracle Spatial 数据库(我遗漏了其他 1496 个坐标):
SELECT *
FROM pointsofinterest
WHERE Sdo_inside (pointsofinterest.geoloc,
Sdo_geometry(2003, 4326, NULL, Sdo_elem_info_array(1, 1003, 1),
Sdo_ordinate_array(4.237378120400001, 43.7904510498, 4.2357025146,
43.7882575989
,
4.232352256800001, 43.7882575989,
4.232352256800001, 43.7871589661))) = 'TRUE'
并得到这个错误:
ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause:
*Action: Error at Line: 4 Column: 27
SDO_GEOMETRY 对象包含 1500 个二维坐标。根据 http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_objrelschema.htm#SPATL489
这应该不是问题当我去掉很多坐标的时候,没有报错。
我是否遗漏了有关 SDO_GEOMETRY 构造函数中最大坐标数的信息?为什么会出现此错误?
此错误来自 SQL 中的限制之一:可以传递给存储函数或过程的参数的最大数量,即 999 个参数(实际上是 1000 个,包括 return 值).这是因为 sdo_ordinate_array() 实际上是一个函数——sdo_ordinate_array 类型的构造函数。
正确的方法(也更有效)是将 sdo_geometry 对象作为绑定变量传递并在查询中使用它。完成的方式取决于您用来提交 select 声明的语言 ...