ビューでOracle SDO_POINTを使用しているときに小数が失われる
-
22-07-2019 - |
質問
座標などを含むテーブルがあります。以前は、これらを2つの数値フィールド(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;
これは読み取りと書き込みの両方で機能しますが、ビューに10進数を書き込むと、小数点が失われます。理由がわかりません。誰でも助けることができますか?以下に問題を示します。
meas_pnt_tabを更新m set m.position.SDO_POINT.x = 2.3 where meas_key = 1; meas_pnt_tabからm.position.SDO_POINT.Xを選択しますm meas_key = 1; -> xは2.3です。良い!
meas_pntを更新し、x_coordinate = 2.3を設定します。ここで、meas_key = 1; meas_pnt_tabからm.position.SDO_POINT.Xを選択しますm meas_key = 1; -> 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