2016-07-18 4 views
0

Oracle Locator에서 사용자 정의 함수를 가지고 있으며이 함수를 cx_Oracle에서 사용하여 GeoJSON에서 SDO_Geometry를 변환합니다!cx_Oracle 내에서 사용자 정의 함수 호출하기

import cx_Oracle 
import json 

connection = cx_Oracle.Connection("TEST_3D/[email protected]:1521/sdetest") 

cursor = connection.cursor() 
cursor.execute("""SELECT a.id AS building_nr, c.Geometry AS geometry, d.Classname AS polygon_typ FROM building a, THEMATIC_SURFACE b, SURFACE_GEOMETRY c, OBJECTCLASS d WHERE a.grid_id_400 = 4158 AND a.id = b.BUILDING_ID AND b.LOD2_MULTI_SURFACE_ID = c.ROOT_ID AND c.GEOMETRY IS NOT NULL AND b.OBJECTCLASS_ID = d.ID""") 
obj = cursor.fetchone() 
obj = obj[1] 
print obj 

result = cursor.callfunc('sdo2geojson', cx_Oracle.OBJECT, [obj]) 

내 개체는 다음과 같습니다. cx_Oracle.OBJECT. 이 함수는 SQLdeveloper 내부에서 작동합니다.

나는 다음과 같은 오류를 얻을 함수를 호출

: cx_Oracle.NotSupportedError : Variable_TypeByValue() : 처리되지 않은 데이터 형식 cx_Orac le.OBJECTVAR 잘못하고 무엇 미안

???

답변

0

이 기능은 현재 출시되지 않은 cx_Oracle 버전에서 사용할 수 있습니다. 소스는 https://bitbucket.org/anthony_tuininga/cx_oracle에서 얻을 수 있습니다.

+0

아직 작동하지 않습니다. 그것은 쓰여졌습니다 _ "InterfaceError : 바인드 변수와 연관되지 않은 객체 유형"_ 무엇이 잘못 되었습니까? – Moehre

+0

이것은 제한 사항입니다. cursor.var()을 사용하여 변수를 만들고이를 반환 유형으로 사용할 수 있습니다. 거기에 객체 유형을 전달할 수 있어야하지만 현재 지원되지 않습니다. –

관련 문제