Question

Nous avons un tableau contenant des coordonnées, entre autres choses. Nous avions l'habitude de les stocker dans deux champs numériques (x et y), mais nous avons maintenant remplacé cela par un champ SDO_GEOMETRY. Pour assurer la compatibilité ascendante, nous avons créé une vue (portant le même nom que la table), où nous effectuons:

créez ou remplacez view view_pnt as sélectionnez ..., m.position.SDO_POINT.X x_coordinate, m.position.SDO_POINT.Y y_coordinate à partir decol_pnt_tab m;

Cela fonctionne à la fois en lecture et en écriture, mais lors de l'écriture de nombres décimaux dans la vue, les décimales sont perdues. Je ne peux pas comprendre pourquoi. Quelqu'un peut aider? Ce qui suit illustre le problème:

update Meas_pnt_tab m a défini m.position.SDO_POINT.x = 2.3 où chapitre_champ = 1; sélectionnez m.position.SDO_POINT.X dans Meas_pnt_tab m où Meas_key = 1; - > x est 2,3. Bien!

update Meas_pnt set x_coordinate = 2.3 où Meas_key = 1; sélectionnez m.position.SDO_POINT.X dans Meas_pnt_tab m où Meas_key = 1; - > x est 2.

Était-ce utile?

La solution

Je ne peux pas reproduire votre erreur. Voici ce que je reçois:

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

Pouvez-vous publier vos instructions CREATE?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top