Wir haben eine Tabelle mit Koordinaten, unter anderem. Früher haben wir diese in zwei Zahlenfeldern (x und y) gespeichert, aber wir haben dies nun durch ein Feld SDO_GEOMETRY ersetzt. Aus Gründen der Abwärtskompatibilität haben wir eine Ansicht erstellt (mit dem gleichen Namen wie die Tabelle):Verlust von Dezimalstellen bei Verwendung von Oracle SDO_POINT in einer Ansicht
Ansicht erstellen oder ersetzen meas_pnt als select ..., m.position.SDO_POINT.X x_coordinate , m.position.SDO_POINT.Y y_coordinate von meas_pnt_tab m;
Dies funktioniert sowohl beim Lesen als auch beim Schreiben, aber beim Schreiben von Dezimalzahlen in die Ansicht gehen die Dezimalstellen verloren. Ich kann nicht herausfinden warum. Kann jemand helfen? Folgendes veranschaulicht das Problem:
update meas_pnt_tab m gesetzt m.position.SDO_POINT.x = 2.3 wo meas_key = 1; Wählen Sie m.position.SDO_POINT.X aus meas_pnt_tab m mit meas_key = 1; -> x ist 2.3. Gut!
update meas_pnt gesetzt x_koordinate = 2.3 wo meas_key = 1; Wählen Sie m.position.SDO_POINT.X aus meas_pnt_tab m mit meas_key = 1; -> x ist 2.
Danke, Vincent. Ich habe deine Aussagen versucht und sie arbeiten auch für mich. Ich muss untersuchen, was wir anders machen. –
Ich dachte, die Transformation wurde vollständig durch die Ansicht selbst gemacht, aber wir hatten einen "statt update" Auslöser auf der Ansicht, die einige Dinge getan hat. Und es verwendete intern Integer-Variablen. Deshalb wurden die Dezimalstellen abgeschnitten. Aber danke, bis Sie geantwortet haben, dachte ich, dass etwas mit dem SDO_POINT-Datentyp passiert. –