概述
这次的java程序,需要新建一张表,所以需要先确认表名是否存在,存在的话就删除然后新建,不存在就新建,语句可以用下面的:
select * from user_tables where table_name='TABLENAME';
其中tablename是你要查询的表名,必须全部大写,如果查询结果的行数大于0,就说明这张表存在。
如果需要调用oracle已经存在的包,以及包中的函数,可以直接在select中使用
比如,我要调用这个get_infuffer_ratio方法,需要传入2个geometry对象,可以这样用
select b.link_pid, NAVI_SHAPE_MATCH.GET_INBUFFER_RATIO(a.geometry, b.geometry) as "长度相似度"
from rd_link a, rd_link b
where (a.link_pid = 15667280 and b.mesh_id=a.mesh_id)
返回rd_link中id=15667280这个link所在mesh 的link和15667280之间的长度相似度。
oracle中的对象有geometry,可以使用geometry进行一些图形操作计算,比如生成buffer
select link_pid, SDO_GEOM.SDO_BUFFER(a.geometry, 8, 0.5, 'unit= M') as GEOMETRY
from rd_link a where a.link_pid=111
意思是在rd_link中找link_pid=111的数据生成buffer,这个buffer作为新对象的geometry。
buffer函数的参数 SDO_GEOM.SDO_BUFFER(a.geometry, b,c, d) ,a是表名,代表数据来自于哪张表的数据
b是buffer的宽度值,c是误差范围,d是数据值的单位。
oracle中对象计算相交关系,可以这样写:
select a.* from rd_link a ,(select * from rd_link where link_pid=1) b where sdo_Geom.Relate(a.geometry, 'ANYINTERACT', b.geometry, 0.5 ) = 'TRUE'
意思是找到和link_pid=1的数据相交的数据
sdo_Geom.Relate(a.geometry,b, c.geometry, d ) = 'TRUE'
a和c是geometry对象,是2个geometry对象关系的判断原则,可以去网上找找,有很多,相交就是ANYINTERACT,d是误差值。最后结果等于‘TRUE’就是相交的,'FALSE'就是不想交的。
java也可以执行事务操作,比如给body的函数设定参数,一次设定,只对一次会话生效。比如:
sql = "begin n" +
"NAVI_SHAPE_MATCH.C_BUF_DISTANCE := 5;n" +
"end;";
最后执行这个sql,在使用函数时,参数就变为了设定值
oracle如果要执行 跨数据库的查询,需要建立database_link,比如一个数据在192.168.1.200,一个在192.168.1.201
在plsql中,找到database_link右击,选择新建
填入相关的参数,也就是另一个数据的用户名密码地址
建好后,就可以使用了。
使用的时候,就是 表名@db_link名字,例如
select * from rd_link@dblink_155 where link_pid=1
把文本导入oracle数据库,在plsql中点击工具,选择文本导入器。
在A处,填写登录服务器的用户名,B处填写数据需要插入的表名,C的地方选择你原始数据的列,D是c这列插入B表的哪个字段
都设置完成后,点击导入,就可以了
最后
以上就是害怕龙猫为你收集整理的oracle----buffer、图形相交、使用body中的函数、确认表存在,导入文本入库的全部内容,希望文章能够帮你解决oracle----buffer、图形相交、使用body中的函数、确认表存在,导入文本入库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复