Pregunta

Tenemos una tabla que contiene coordenadas, entre otras cosas. Solíamos almacenarlos en dos campos numéricos (x e y), pero ahora hemos reemplazado esto con un campo SDO_GEOMETRY. Para la compatibilidad con versiones anteriores, hemos creado una vista (con el mismo nombre que solía tener la tabla), donde hacemos:

crea o reemplaza la vista meas_pnt como seleccione ..., m.position.SDO_POINT.X x_coordinate, m.position.SDO_POINT.Y y_coordinate de meas_pnt_tab m;

Esto funciona tanto para leer como para escribir, pero al escribir números decimales en la vista, los decimales se pierden. No puedo entender por qué. ¿Alguien puede ayudar? Lo siguiente ilustra el problema:

actualizar meas_pnt_tab m set m.position.SDO_POINT.x = 2.3 donde meas_key = 1; seleccione m.position.SDO_POINT.X de meas_pnt_tab m donde meas_key = 1; - > x es 2.3. ¡Bien!

actualizar meas_pnt set x_coordinate = 2.3 donde meas_key = 1; seleccione m.position.SDO_POINT.X de meas_pnt_tab m donde meas_key = 1; - > x es 2.

¿Fue útil?

Solución

No puedo reproducir tu error. Esto es lo que obtengo:

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

¿Puede publicar sus declaraciones CREATE?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top