例: さまざまなサイズの引数データ型の呼び出し - Teradata Database - Teradata Vantage NewSQL Engine - スカラーUDFの例5: さまざまなサイズの引数データ型の呼び出し。

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/xzf1512079057909.ditamap
dita:ditavalPath
ja-JP/xzf1512079057909.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

この例では、UDF呼び出しの引数のデータ型(INTEGER)と、対応するUDFパラメータのデータ型(BYTEINT)とは、同じではありません。これは、引数のデータ型のサイズがUDFパラメータのデータ型より大きいためです。2つのデータ型には互換性がありますが、INTEGER引数はBYTEINTパラメータ内に適合できないため、エラーが返されます。

   CREATE FUNCTION test.MyUDF (a BYTEINT, b INT, c INT)
   RETURNS INT
   LANGUAGE SQL
   CONTAINS SQL
   DETERMINISTIC
   COLLATION INVOKER
   INLINE TYPE 1
   RETURN a * b * c;
   CREATE TABLE t1 (a1 INT, b1 INT);
   SELECT test.MyUDF(t1.a1, t1.b1, 2) FROM t1;

次のエラーが返されます。

   Failure 5589: Function "test.MyUDF" does not exist.

エラーを回避するには、次に示すように、呼び出し側で明示的に、t1.a1の値をBYTEINTにキャストする必要があります。

   SELECT test.MyUDF(CAST(t1.a1 AS BYTEINT), t1.b1, 2) FROM t1;