Frage

Wir haben eine Tabelle mit Koordinaten, unter anderem. Wir benutzten diese in zwei Zahlenfelder speichern (x und y), aber wir haben jetzt diese mit einem SDO_GEOMETRY Feld ersetzt. Für die Rückwärtskompatibilität haben wir einen Blick (mit dem gleichen Namen wie die Tabelle verwendet hat) erstellt, wo wir tun:

erstellen oder Ansicht meas_pnt ersetzen wählen ..., m.position.SDO_POINT.X x_coordinate, m.position.SDO_POINT.Y y_coordinate von meas_pnt_tab m;

Dies funktioniert sowohl für das Lesen und Schreiben, aber wenn Dezimalzahlen zu der Ansicht zu schreiben, werden die Dezimalstellen verloren. Ich kann nicht herausfinden, warum. Kann jemand helfen? Die folgende Abbildung zeigt das Problem:

update meas_pnt_tab m.position.SDO_POINT.x m gesetzt = 2,3, wo meas_key = 1; wählen m.position.SDO_POINT.X aus meas_pnt_tab m wo meas_key = 1; -> x ist 2.3. Gut!

update meas_pnt Satz x_coordinate = 2,3, wo meas_key = 1; wählen m.position.SDO_POINT.X aus meas_pnt_tab m wo meas_key = 1; -.> X 2

War es hilfreich?

Lösung

Ich kann deinen Fehler nicht reproduzieren. Dies ist, was ich bekommen:

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

Können Sie Ihre CREATE-Anweisungen schreiben?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top