보기에서 Oracle SDO_Point를 사용할 때 소수점을 잃습니다
-
22-07-2019 - |
문제
우리는 무엇보다도 좌표가 포함 된 테이블이 있습니다. 우리는 이것들을 두 개의 숫자 필드 (x 및 y)에 저장했지만 이제 이것을 sdo_geometry 필드로 대체했습니다. 거꾸로 호환성을 위해, 우리는 우리가하는 곳에서보기 (예전 테이블과 동일한 이름을 가진)를 만들었습니다.
view grest_pnt를 select ..., m.position.sdo_point.x x_coordinate, m.position.sdo_point.y y_coordinate from meas_pnt_tab m;
이것은 읽기와 쓰기 모두에서 작동하지만, 소수점 번호를보기에 쓸 때, 소수점은 사라집니다. 왜 그런지 알 수 없습니다. 아무도 도울 수 있습니까? 다음은 문제를 보여줍니다.
Meas_PNT_TAB M SET M.Position.sdo_point.x = 2.3 여기서 Meas_key = 1; mead_pnt_tab m에서 m.position.sdo_point.x를 선택하십시오. 여기서 meas_key = 1; -> x는 2.3입니다. 좋은!
Meas_PNT SET X_COORDINATE = 2.3 여기서 meas_key = 1; mead_pnt_tab m에서 m.position.sdo_point.x를 선택하십시오. 여기서 meas_key = 1; -> x는 2입니다.
해결책
나는 당신의 오류를 재현 할 수 없습니다. 이것이 내가 얻는 것입니다.
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 문장을 게시 할 수 있습니까?
제휴하지 않습니다 StackOverflow