目的
ジオメトリのWKB (Well-Known Binary)表現のバイト単位の長さを返します。
構文
FNC_GeomSize_t
FNC_GeomGetWKBSize(GEO_HANDLE geoHandle)
- GEO_HANDLE geoHandle
- 外部ルーチンへの入力または出力パラメータとして定義されたST_Geometry型へのハンドル。
使用上の注意
FNC_GeomGetWKBSizeは、ジオメトリのWKB表現のサイズを取得します。ジオメトリのGEO_HANDLEは入力として渡され、ジオメトリのWKB表現のサイズは呼び出し側に返されます。
例: FNC_GeomGetWKBを使用してST_Geometry WKBを取得する
次の関数例では、ST_Geometryパラメータを受け取り、ジオメトリのWell-Known Binary形式を取得します。これはBLOBとして取得されたWKBを返します。
CREATE FUNCTION geomUDF2(P1 st_geometry(1000)) RETURNS BLOB AS LOCATOR NO SQL PARAMETER STYLE SQL DETERMINISTIC LANGUAGE C EXTERNAL NAME 'CS!geomUDF2!geomUDF2.c'; void geomUDF2(GEO_HANDLE *geom_handle, LOB_RESULT_LOCATOR *return_handle, int* indicator_thisGeom, int* indicator_returnLOB, char sqlstate[6], SQL_TEXT extname[129], SQL_TEXT specific_name[129], SQL_TEXT error_message[257] ) { FNC_GeomSize_t geomsize; FNC_GeomSize_t wkbSize; byte* wkbBuffer; FNC_GeomSize_t wkbBufferSize; FNC_LobLength_t actlen; int srid; /* Get the Geometry WKT Size */ geomsize = FNC_GeomGetWKBSize(*geom_handle); wkbBuffer = (byte*)FNC_Malloc(geomsize); wkbBufferSize = geomsize; /* Get the WKB value */ FNC_GeomGetWKB(*geom_handle,wkbBuffer, wkbBufferSize, &wkbSize, &srid); /* Append the WKB to a LOB */ FNC_LobAppend(*return_handle, wkbBuffer, wkbBufferSize, &actlen); *indicator_returnLob = 0; FNC_free(wkbBuffer); }