Oracle输出:游标,文件还是很长的字符串?

时间:2010-04-22 21:31:27

标签: compression oracle10g cursor spatial

首先,设置:我在带有空间列的Oracle10g数据库中有一个表。我需要能够传入空间参考,以便我可以将几何体重新投影到任意坐标系中。最后,我需要将此投影的结果压缩为zip文件,并使其可通过Silverlight项目下载。

我真的很感激有关实现这一目标的最佳方法的想法。在下面的示例中,SRID是空间参考ID整数,用于将几何点转换为新的坐标系。

特别是,我可以看到几种可能性。还有更多,但这是我如何思考的想法:

a)将SRID传递给动态视图 - >执行投影,输出光标 - >将光标发送到UTL_COMPRESS - >将输出写入文件(以某种方式) - >将URL发送到Silverlight应用

b)使用SRID从Silverlight app调用Oracle函数 - >执行投影,输出一个字符串 - >将字符串构建到文件中 - >使用.NET中的SharpZipLib库压缩文件 - >将字节流发送回Silverlight应用程序

我已经完成了b)的前两个步骤,100点的转换大约需要7秒,这是不可接受的慢。我希望在Oracle中完全处理它会更快。

如果任何人都可以通过这两种方式看到潜在的问题,或者可以提出更好的方法,那将会非常有帮助。

谢谢!

ETA:我打算在发布之前给这个更好的标题。遗憾。

1 个答案:

答案 0 :(得分:0)

只是清理未回答的问题。这个问题涉及我需要制作的系统,Silverlight应用程序的用户可以选择一组点(几千个)并将这些点重新投影到状态平面坐标。问题是,当用户等待时,数千个点的转换太慢而不能发生。所以我做了以下事情:

我将SRID从我的Silverlight应用程序传递给Oracle并创建转换请求。我有一个单独的工作轮询请求表。当它找到一个时,它会转换请求中选择的所有点并将它们写入文件。文件完成后,服务会向请求中的地址发送一封电子邮件,其中包含下载文件所需的URL。