17.10 - 例: さまざまなサイズの引数データ型の呼び出し - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

この例では、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;