GIS

st_geometry 사용시 오라클 select 4000자 이상 에러.

조심이 2015. 1. 26. 17:11
반응형

에러 메시지::

ORA-22835: 버퍼가 너무 작아 CLOB를 CHAR 또는 BLOB에서 RAW로 변환할 수 없습니다(실제: 4467, 최대: 4000)



SELECT
  to_char(
  SDE.ST_ASTEXT(b.SHAPE)
  )
FROM DHT_ROBD_CN a
INNER JOIN DHL_BULD_AS b ON a.BLD_IDN = b.BLD_IDN
WHERE
  1!=1
  or a.ROM_IDN ='1111'

 

ST_GEOMETRY 를 이용하여 공간쿼리중 shape 필드를 wkt로 변환하던 도중 4000 자 이상오류 발생...


CLOB으로 변환 후 4000자씩 끊어서 쿼리해 오고 프로그램에서 붙여서 사용하는 것으로 결정..

2000만자가 안넘는다는 가정하게 꼼수로 처리.. 넘는다면 컬럼을 더 붙여야 할 듯...

암튼 4000자가 넘는 문자열을 

TO_CLOB으로 변환 후 dbms_lob.substr(CLOB컬러,가져올문자수,시작위치)로 4000개씩 끊어서 가져온 후 프로그램에서 붙여서 사용.


올바른 사용법인지는 잘 모르겠음.ㅋㅋ


SELECT 
   TO_CHAR(dbms_lob.substr(A.WKT,4000,1) )  AS TEST1,
   TO_CHAR(dbms_lob.substr(A.WKT,8000,4001) ) AS TEXT2,
   TO_CHAR(dbms_lob.substr(A.WKT,12000,84001) ) AS TEXT3,
   TO_CHAR(dbms_lob.substr(A.WKT,16000,12001) ) AS TEXT4,
   TO_CHAR(dbms_lob.substr(A.WKT,20000,16001) ) AS TEXT5
FROM
(
SELECT
  TO_CLOB(   SDE.ST_ASTEXT(b.SHAPE)  ) AS WKT      
FROM DHT_ROBD_CN a
INNER JOIN DHL_BULD_AS b ON a.BLD_IDN = b.BLD_IDN
WHERE
  1!=1
  or a.ROM_IDN ='1111'
  ) A
  




반응형