目的
ジオメトリの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);
}