SPECIFIC specific_function_name - Teradata Database - Teradata Vantage NewSQL Engine - SPECIFIC specific_function_name オプション、CREATE FUNCTION(テーブル形式)SQL文。

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

関数の特定の名前。

データベースのUDFライブラリに、名前にマルチバイト文字が存在するオブジェクトが含まれている場合、新規オブジェクト名に1バイト文字のみが含まれる場合でも、1バイト セッション文字セットを使用して、新たなUDF、UDT、メソッド、あるいはJavaストアド プロシージャ オブジェクトを作成することはできません。そうでない場合、Teradata Databaseは、要求元にエラーを返し、代わりにマルチバイト セッション文字セットを使用します。

データベース オブジェクトの命名ルールについては、<Teradata Vantage™ SQL基礎、B035-1141>を参照してください。

この句はオーバーロード関数の名前では必須ですが、その他の場合は任意指定であり、関数定義ごとに1回だけ指定できます。

specific_function_nameを使用してCまたはC++関数名を識別する場合は、C言語またはC++言語の識別子命名規則に従ってください。Java関数用のJava言語の命名規則についても同様です。

specific_function_namefunction_nameとは異なり、名前の重複を回避するために、データベースまたはユーザー内で固有でなければなりません。

この名前はDBC.TVMに、UDFデータベース オブジェクトの名前として保存されます。

database_name
user_name
オプションのデータベースまたはユーザー名。

例: テーブル関数への入力パラメータの順序付け

次に示す簡単な例では、テーブルUDFのためのHASH BY句およびLOCAL ORDER BY句の使用方法を説明しています。テーブル関数add2intは、入力として2つの整数値を取り、それら両方の値と合計を返します。

問合わせQ1は、dt.y1でハッシュされ、dt.x1で各AMPに対して値順にされるdtを入力として要求するadd2intから、すべての列を選択します。指定したハッシュ法とローカルの順序付けはadd2int関数に適していない可能性があり、説明目的にのみ使用されます。

想定されるQ1の結果として、最初にdtがスプールされ、AMP間にy1でハッシュされます。各AMPでは、行がx1の値でソートされます。最終的にハッシュされソートされたスプールが、add2intへの入力として使用されます。

     CREATE TABLE t1 (
       a1 INTEGER,
       b1 INTEGER);
     CREATE TABLE t2 (
       a2 INTEGER,
       b2 INTEGER);
     REPLACE FUNCTION add2int (
       a INTEGER, 
       b INTEGER)
     RETURNS TABLE (
       addend1 INTEGER, 
       addend2 INTEGER, 
       mysum INTEGER)
     SPECIFIC add2int  
     LANGUAGE C  
     NO SQL  
     PARAMETER STYLE SQL
     NOT DETERMINISTIC
     CALLED ON NULL INPUT
     EXTERNAL NAME 'CS!add3int!add2int.c';
/* Query Q1 */
     WITH dt(x1,y1) AS (SELECT a1,b1
                        FROM t1)
     SELECT *  
     FROM TABLE (add2int(dt.x1,dt.y1) 
     HASH BY y1 
     LOCAL ORDER BY x1) AS tf;