终于搞好了软件,搞好了 SDE 的 Post,现在还有一个问题,即使用 SQL 直接操作 sde for oralce,只有这种操作,才最高效,也是该项目的最终目标。
马上找了一个测试 sql 语句做试验:
select sde.ST_AsText(SDE.ST_Geometry('POINT (10 10)', 0)) from dual;
很郁闷的是,直接报错了!错误我就不贴图了,毕竟,我现在搞好了,不想折腾了 嘿嘿,下边是解决办法,主要参考博客
https://blog.csdn.net/laironggui/article/details/78866753
找到文件 st_shapelib.dll ,该文件可以从两个位置得到,分别为
- C:\Program Files\ArcGIS\ArcSDE\ora11gexe\bin
- C:\Program Files (x86)\ArcGIS\Desktop10.1\DatabaseSupport\Oracle\Windows64
拷贝该文件到目录 C:\oracle\product\11.2.0\dbhome_1\BIN
实际上,不一定要拷贝到这个文件夹,关键是该文件原来所在的位置的全路径存在空格——我是这么理解的。
关于这个 st_shapelib.dll 文件,我使用 depends.exe 查看了一下,竟然报错,缺少两个文件,分别为
- devmgr.dll
- msjava.dll
我将这两个文件从网上找到,补齐了。
然后是修改 oralce 的配置,找到文件 C:\oracle\product\11.2.0\dbhome_1\hs\admin\extproc.ora 修改最后一行为
SET EXTPROC_DLLS=ONLY:C:\\oracle\\product\\11.2.0\\dbhome_1\\BIN\\st_shapelib.dll
保存,重启监听和数据库实例服务。
配置并没有结束,还需要再运行如下的两句SQL语句
create or replace library ST_SHAPELIB as 'D:\Oracle\product\12.1.0\dbhome_1\BIN\st_shapelib.dll';
alter package sde.st_geometry_shapelib_pkg compile reuse settings;
然后使用
select * from user_libraries;
最后重新运行测试 SQL ,返回预期的结果!