目的
ジオメトリのWKT (Well-Known Text)表現のバイト単位の長さを返します。
構文
FNC_GeomSize_t FNC_GeomGetWKTSize(GEO_HANDLE geoHandle)
- GEO_HANDLE geoHandle
- 外部ルーチンへの入力または出力パラメータとして定義されたST_Geometry型へのハンドル。
使用上の注意
FNC_GeomGetWKTSizeは、ジオメトリのWKT表現のサイズを取得します。ジオメトリのGEO_HANDLEは入力として渡され、ジオメトリのWKT表現のサイズは呼び出し側に返されます。
例: FNC_GeomGetWKTを使用してST_Geometry WKTを取得する
次の例の関数では、ST_Geometryパラメータを取り、ジオメトリのWell Known Text形式を取得します。文字列をST_Geometry戻りパラメータで返します。
CREATE FUNCTION geomUDF1(P1 st_geometry(1000))
RETURNS ST_GEOMETRY(1000)
NO SQL
PARAMETER STYLE SQL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!geomUDF1!geomUDF1.c';
void geomUDF1(GEO_HANDLE* geom_handle,
GEO_HANDLE* return_handle,
int* indicator_thisGeom,
int* indicator_returnGeom,
char sqlstate[6],
SQL_TEXT extname[129],
SQL_TEXT specific_name[129],
SQL_TEXT error_message[257] )
{
FNC_GeomSize_t geomsize;
FNC_GeomSize_t wktSize;
char* wktBuffer;
FNC_GeomSize_t wktBufferSize;
int srid , max_length, numLobs;
/* Get the Geometry Info */
FNC_GetGeometryInfo(*geom_handle,&max_length, &numLobs);
if(numLobs == 0)
{
/* Get the Geometry WKT Size */
geomsize = FNC_GeomGetWKTSize(*geom_handle);
/* Allocate the buffer to hold the WKT. Note that we add
1 for the null termination character. */
wktBuffer = (char*)FNC_Malloc(geomsize + 1);
wktBufferSize = geomsize + 1;
/* Get the WKT string */
FNC_GeomGetWKT(*geom_handle,wktBuffer, wktBufferSize,
&wktSize, &srid);
/* Set the WKT string as return value */
FNC_GeomSetWKT(*return_handle, wktBuffer, wktSize,0);
*indicator_returnGeom = 0;
FNC_free(wkbBuffer);
}
}