0

我们有一个表格,其中包含坐标等。我们曾经将它们存储在两个数字字段(x 和 y)中,但现在我们已将其替换为 SDO_GEOMETRY 字段。为了向后兼容,我们创建了一个视图(与以前的表同名),我们在其中执行以下操作:

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

这适用于读取和写入,但是在将小数写入视图时,小数会丢失。我不知道为什么。有人可以帮忙吗?下图说明了问题:

更新 meas_pnt_tab m 设置 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 where meas_key=1; 从 meas_pnt_tab m 中选择 m.position.SDO_POINT.X,其中 meas_key=1;-> x 是 2。

4

1 回答 1

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 语句吗?

于 2009-08-05T08:50:37.303 回答