在视图中使用Oracle SDO_POINT时丢失小数

时间:2009-08-05 08:19:52

标签: oracle spatial oracle-spatial

我们有一个包含坐标的表格。我们曾经将它们存储在两个数字字段(x和y)中,但我们现在用SDO_GEOMETRY字段替换它。为了向后兼容,我们创建了一个视图(与以前的表名称相同),我们这样做:

创建或替换视图meas_pnt为 select ...,m.position.SDO_POINT.X x_coordinate,m.position.SDO_POINT.Y y_coordinate 来自meas_pnt_tab m;

这适用于读取和写入,但在向视图写入十进制数字时,小数将丢失。我无法弄清楚为什么。有人可以帮忙吗?以下说明了问题:

更新meas_pnt_tab m set m.position.SDO_POINT.x = 2.3其中meas_key = 1; 从meas_pnt_tab m中选择m.position.SDO_POINT.X,其中meas_key = 1; - > x是2.3。好!

更新meas_pnt set x_coordinate = 2.3其中meas_key = 1; 从meas_pnt_tab m中选择m.position.SDO_POINT.X,其中meas_key = 1; - > x是2。

1 个答案:

答案 0 :(得分:1)

我无法重现您的错误。这就是我得到的:

SQL> CREATE TABLE meas_pnt_tab (position sdo_point_type, meas_key NUMBER);

Table created
SQL> INSERT INTO meas_pnt_tab (position, meas_key) 
  2  VALUES (sdo_point_type(2.3,0,0), 1);

1 row inserted
SQL> SELECT m.position.X FROM meas_pnt_tab m WHERE meas_key=1;

POSITION.X
----------
       2,3
SQL> CREATE OR REPLACE VIEW meas_pnt AS
  2  SELECT m.position.X x_coordinate,
  3         m.position.Y y_coordinate,
  4         m.meas_key
  5    FROM meas_pnt_tab m;

View created
SQL> UPDATE meas_pnt SET x_coordinate = 2.4 WHERE meas_key=1;

1 row updated
SQL> SELECT m.position.X FROM meas_pnt_tab m WHERE meas_key=1;

POSITION.X
----------
       2,4

您可以发布您的CREATE语句吗?