17.00 - 17.05 - FNC_MBRSetValue - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

目的

4つの倍精度値のバッファを使用して、MBR (最小外接矩形)型の値を設定します。値は、MBRを定義するxmin、ymin、xmax、およびymax座標を表わします。

構文規則

void
FNC_MBRSetValue(GEO_HANDLE    mbrHandle,
                double *      mbrValue)
GEO_HANDLE mbrHandle
UDF/UDMの戻り値であると定義されているか、または外部ストアド プロシージャに対するINOUT/OUTパラメータであると定義されている、MBR型へのハンドル。
double* mbrValue
4つの倍精度値を格納するバッファへのポインタ。

使用上の注意

FNC_MBRSetValueはMBR型の値を設定します。4つの倍精度値を含むバッファmbrValueがMBRハンドルとともにルーチンに入力として提供されます。

例: FNC呼び出しを使用してMBR型の値を設定する

次の関数は4つの倍精度値を入力として受け取り、MBRの値を返します。

CREATE FUNCTION mbrUDF1(P0 DOUBLE PRECISION, P1 DOUBLE PRECISION, 
                        P2 DOUBLE PRECISION, P3 DOUBLE PRECISION)
RETURNS MBR
NO SQL
PARAMETER STYLE SQL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!mbrUDF1!mbrUDF1.c';

void mbrUDF1 (DOUBLE_PRECISON* p0,
              DOUBLE_PRECISON* p1,
              DOUBLE_PRECISON* p2,
              DOUBLE_PRECISON* p3,
              GEO_HANDLE* resultMBR,
              int* indicator_p0,
              int* indicator_p1,
              int* indicator_p2,
              int* indicator_p3,
              int* indicator_Result,
              char       sqlstate[6],
              SQL_TEXT   extname[129],
              SQL_TEXT   specific_name[129],
              SQL_TEXT   error_message[257] )
{
     double* mbrBuffer;
     int returnSize;
     int mbrBufferSize;

     mbrBufferSize = 4 * SIZEOF_DOUBLE_PRECISION;
     mbrBuffer = (double*)FNC_Malloc(mbrBufferSize);
     /* Set the double precision values in the buffer */
      mbrBuffer[0] = *p0;
      mbrBuffer[1] = *p1;
      mbrBuffer[2] = *p2;
      mbrBuffer[3] = *p3;

      /* Set the MBR value */
       FNC_MBRSetValue(*resultMBR, mbrBuffer); 

     *indicator_Result = 0;
      FNC_free(mbrBuffer);
}