17.00 - 17.05 - FNC_MBBSetValue - 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
日本語 (日本)

目的

6つの倍精度値のバッファを使用して、MBB(最小外接ボックス)型の値を設定します。値は、MBBを定義するxmin、ymin、zmin、xmax、ymax、およびzmax座標を表わします。

構文規則

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

使用上の注意

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

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

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

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

void mbbUDF1 (DOUBLE_PRECISION* p0,
              DOUBLE_PRECISION * p1,
              DOUBLE_PRECISION * p2,
              DOUBLE_PRECISION * p3,
              DOUBLE_PRECISION * p4,
              DOUBLE_PRECISION * p5,
              GEO_HANDLE* resultMBB,
              int* indicator_p0,
              int* indicator_p1,
              int* indicator_p2,
              int* indicator_p3,
              int* indicator_p4,
              int* indicator_p5,
              int* indicator_Result,
              char       sqlstate[6],
              SQL_TEXT   extname[129],
              SQL_TEXT   specific_name[129],
              SQL_TEXT   error_message[257] )
{
     double* mbbBuffer;
     int returnSize;
     int mbbBufferSize;

     mbbBufferSize = 6 * SIZEOF_DOUBLE_PRECISION;
     mbbBuffer = (double*)FNC_Malloc(mbbBufferSize);
     /* Set the double precision values in the buffer */
      mbbBuffer[0] = *p0;
      mbbBuffer[1] = *p1;
      mbbBuffer[2] = *p2;
      mbbBuffer[3] = *p3;
      mbbBuffer[4] = *p4;
      mbbBuffer[5] = *p5;

      /* Set the MBB value */
       FNC_MBBSetValue(*resultMBB, mbbBuffer); 

     *indicator_Result = 0;
      FNC_free(mbbBuffer);
}