2016-07-18 8 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()を使用して変数を作成し、それを戻り値の型として使用できます。そこにオブジェクト型を渡すことは可能でなければなりませんが、現在サポートされていません。 –

関連する問題