0

とりわけ、座標を含むテーブルがあります。以前はこれらを 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 進数を書き込むと、10 進数が失われます。理由がわかりません。誰でも助けることができますか?以下に問題を示します。

update meas_pnt_tab m set m.position.SDO_POINT.x = 2.3 where meas_key=1; m.position.SDO_POINT.X を meas_pnt_tab から選択 m where meas_key=1; -> x は 2.3 です。良い!

update meas_pnt set x_coordinate = 2.3 where meas_key=1; m.position.SDO_POINT.X を meas_pnt_tab から選択 m where 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 に答える