17.10 - RETURN文の例 - 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-1144-171K-JPN
Language
日本語 (日本)

例1: RETURN文でCASE式を使用した単純なSQL UDF定義

次のCREATE FUNCTIONリクエストは、calcに渡される最初の引数がリテラル「A」の場合は加法演算、「S」の場合は減算演算、「M」の場合は乗法演算、それ以外の場合は除法演算を実行します。

     CREATE FUNCTION calc (func CHARACTER(1), A INTEGER, B INTEGER) 
     RETURNS INTEGER
     LANGUAGE SQL
     DETERMINISTIC
     CONTAINS SQL
     SQL SECURITY DEFINER
     COLLATION INVOKER
     INLINE TYPE 1
     RETURN CASE 
              WHEN func = 'A' 
              THEN A + B
              WHEN func = 'S' 
              THEN A - B
              WHEN func = 'M' 
              THEN A * B
              ELSE A / B
            END;

次のSELECTリクエストは結果として5の値を返します。

     SELECT calc('A', 2, 3);

次のSELECTリクエストは結果として6の値を返します。

     SELECT calc('M', 2, 3);

例2: RETURN文のCASE式によるSQL UDFの定義

「例1: RETURN文でCASE式を使用した単純なSQL UDFの定義」と同様に、このCREATE FUNCTIONリクエストは、RETURN文にCASE式を指定します。

     CREATE FUNCTION test.case_expr (a INTEGER, b INTEGER)
     RETURNS CHARACTER(50)
     LANGUAGE SQL
     DETERMINISTIC
     CONTAINS SQL
     SPECIFIC test.case_expr
     CALLED ON NULL INPUT
     SQL SECURITY DEFINER
     COLLATION INVOKER
     INLINE TYPE 1
     RETURN CASE 
              WHEN a > 1 
              THEN 'a is greater than 1'
              WHEN b > 1 
              THEN 'b is greater than 1'
              ELSE 'a and b are not greater than 1'
            END;