DECIMAL / NUMERIC - 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

Cデータ型定義

typedef signed char DECIMAL1;
typedef short       DECIMAL2;
typedef int         DECIMAL4;

typedef signed char NUMERIC1;
typedef short       NUMERIC2;
typedef int         NUMERIC4;

typedef struct
{
    unsigned int low;
    int          high;
} DECIMAL8, NUMERIC8;

typedef struct
{
    unsigned int int1;
    unsigned int int2;
    unsigned int int3;
    int          int4;
} DECIMAL16, NUMERIC16;

使用方法

使用するC型は、SQL型のサイズによって決まります。

DECIMAL(n,m)またはNUMERIC(n,m)のサイズ 使用するC型
1 ≤ n ≤ 2 DECIMAL1またはNUMERIC1
3 ≤ n ≤ 4 DECIMAL2またはNUMERIC2
5 ≤ n ≤ 9 DECIMAL4またはNUMERIC4
10 ≤ n ≤ 18 DECIMAL8またはNUMERIC8
18 < n DECIMAL16またはNUMERIC16

SQL型のサイズは、DECIMAL入力引数または戻り引数の値の範囲も決定します。例えば、CREATE FUNCTION文でDECIMAL(1,0)入力引数を定義する場合、この引数の値の範囲は-9~9です。値の有効範囲外の値は、数値オーバーフロー エラーを生成します。DECIMAL型の詳細については、<Teradata Vantage™データ型およびリテラル、B035-1143>を参照してください。

可変長としてDECIMAL型を使用する場合は、最善の方法として、Cのコードで処理可能な最大値を処理できるDECIMALを指定してください。

次の例では、UDF定義とC関数宣言でDECIMALを使用しています。

SQL関数定義 対応するC関数宣言
CREATE FUNCTION F1 (
  A DECIMAL(5,0) )
RETURNS DECIMAL(5,0)
 ...;
void f1( DECIMAL4 *a,
         DECIMAL4 *result,
   ... )
{  ... }