17.00 - 17.05 - オーバーフローと数値引数 - 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
日本語 (日本)

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