提问人:User1974 提问时间:5/18/2022 最后编辑:User1974 更新时间:5/19/2022 访问量:102
基于函数的对象类型索引
Function-based index on object type
问:
我在 Oracle 18c 表中有一列是对象类型(用户定义类型):Esri 的ST_GEOMETRY空间类型。
我想在该列上创建一个基于函数的索引:
create or replace function my_owner.test_func(shape in sde.st_geometry) return sde.st_geometry
deterministic is
begin
return sde.st_geometry_operators.st_startpoint_f(sde.st_geometry_operators.st_geometryn_f(shape,1));
end;
create index my_owner.test_idx on my_owner.active_transportation (my_owner.test_func(shape));
我可以毫无问题地创建函数。但是当我尝试创建索引时,它失败了:
Error starting at line : 10 in command -
create index my_owner.test_idx on my_owner.active_transportation (my_owner.test_func(shape))
Error report -
ORA-02327: cannot create index on expression with datatype ADT
02327. 00000 - "cannot create index on expression with datatype %s"
*Cause: An attempt was made to create an index on a non-indexable
expression.
*Action: Change the column datatype or do not create the index on an
expression whose datatype is one of VARRAY, nested table, object,
LOB, or REF.
这个错误似乎非常明确:Oracle 无法在对象上创建基于函数的索引。
话虽如此,这种情况有什么解决方法吗?
例如,我是否可以将对象强制转换为函数中的其他内容,在强制转换上创建索引,然后在查询中取消强制转换?
- 值得一提的是,有一个函数可以将对象转换为 blob。但遗憾的是,基于函数的索引也不支持 Blob。我收到同样的错误。
答: 暂无答案
评论