在视图中使用 Oracle SDO_POINT 时丢失小数
我们有一个包含坐标等内容的表。 我们过去将它们存储在两个数字字段(x 和 y)中,但现在我们已将其替换为 SDO_GEOMETRY 字段。 为了向后兼容,我们创建了一个视图(与以前的表同名),我们在其中执行以下操作:
创建视图 meas_pnt 或将其替换为 选择...,m.position.SDO_POINT.X x_坐标,m.position.SDO_POINT.Y y_坐标 来自 meas_pnt_tab m;
这适用于读取和写入,但是当将小数写入视图时,小数会丢失。 我不明白为什么。 有人可以帮忙吗? 下面说明了该问题:
update meas_pnt_tab m set m.position.SDO_POINT.x = 2.3 where meas_key=1; 从 meas_pnt_tab m 选择 m.position.SDO_POINT.X,其中 meas_key=1; -> x 为 2.3。 好的!
更新 meas_pnt 设置 x_coordinate = 2.3 其中 meas_key=1; 从 meas_pnt_tab m 选择 m.position.SDO_POINT.X,其中 meas_key=1; -> x 是 2。
We have a table containing coordinates, among other things. We used to store these in two number fields (x and y), but we've now replaced this with an SDO_GEOMETRY field. For backwards compatibility, we have created a view (with the same name as the table used to have), where we do:
create or replace view meas_pnt as
select ..., m.position.SDO_POINT.X x_coordinate, m.position.SDO_POINT.Y y_coordinate
from meas_pnt_tab m;
This works for both reading and writing, but when writing decimal numbers to the view, the decimals are lost. I can't figure out why. Can anybody help? The following illustrates the problem:
update meas_pnt_tab m set m.position.SDO_POINT.x = 2.3 where meas_key=1;
select m.position.SDO_POINT.X from meas_pnt_tab m where meas_key=1;
-> x is 2.3. Good!
update meas_pnt set x_coordinate = 2.3 where meas_key=1;
select m.position.SDO_POINT.X from meas_pnt_tab m where meas_key=1;
-> x is 2.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我无法重现你的错误。 这就是我得到的:
你能发布你的 CREATE 语句吗?
I can not reproduce your error. This is what I get:
Can you post your CREATE statements ?