オーバーフローと数値引数 - 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またはC++関数のDECIMALデータ型は、処理の可能な限り大きい型として定義してください。

入力または出力の数値引数に値を代入する際に有効桁が失われるなら、数値オーバーフロー エラーになります。

例えば、1個のDECIMAL(2,0)を引数とする次のスカラー関数があるとします。

CREATE FUNCTION UDF_SMLDEC( p1 DECIMAL(2,0) )
RETURNS DECIMAL(2,0)
LANGUAGE C
NO SQL
PARAMETER STYLE TD_GENERAL
EXTERNAL;

2桁以内の数値を渡す場合は、正常に実行されます。

SELECT UDF_SMLDEC(99);

99より大きい数値または-99より小さい数値を渡すと、有効桁が失われます。

SELECT UDF_SMLDEC(100);
   
 Failure 2616 Numeric overflow occurred during computation.

小数の数値データが渡されたり戻されたりする場合、その値が代入先に入らないなら、Teradata丸めルールに従って丸められます。丸めについての詳細は、<Teradata Vantage™データ型およびリテラル、B035-1143>の「10進/数値型データ型」を参照してください。