FNC_MBRSetValue - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

目的

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);
}