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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/djk1612415574830.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.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;