数値オーバーフロー状態が発生しないようにするため、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進/数値型データ型」を参照してください。