在视图中使用Oracle SDO_POINT时丢失小数
-
22-07-2019 - |
题
我们有一个包含坐标,除其他事项外的表。我们使用这些存储两个数字字段(x和y),但现在我们已经取代这与SDO_GEOMETRY场。为了向后兼容,我们已经创建了一个视图(作为表用于具有相同的名称),在这里我们做:
创建或替换视图meas_pnt如 选择...,m.position.SDO_POINT.X x_coordinate,m.position.SDO_POINT.Y y_coordinate 从meas_pnt_tab米;
这同时适用于阅读和写作,但写的十进制数到视图时,小数会丢失。我想不通为什么。任何人都可以帮忙吗?以下说明了问题:
更新meas_pnt_tab M集m.position.SDO_POINT.x = 2.3其中meas_key = 1; 从meas_pnt_tab m其中meas_key = 1选择m.position.SDO_POINT.X; - > x是2.3。好!
更新meas_pnt组x_coordinate = 2.3其中meas_key = 1; 从meas_pnt_tab m其中meas_key = 1选择m.position.SDO_POINT.X; - > x是2
解决方案
我无法重现你的错误。这是我所得到的:
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语句?
不隶属于 StackOverflow