CREATE/REPLACE FUNCTION Syntax | Teradata Vantage - CREATE FUNCTION and REPLACE FUNCTION Syntax (Table Form) - Advanced SQL Engine - Teradata Database

SQL Data Definition Language Syntax and Examples

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
January 2021
Language
English (United States)
Last Update
2021-01-22
dita:mapPath
ncd1596241368722.ditamap
dita:ditavalPath
hoy1596145193032.ditaval
dita:id
B035-1144
lifecycle
previous
Product Category
Teradata Vantage™
{ CREATE | REPLACE } FUNCTION [ database_name_1. | user_name_1. ] function_name
  ( parameter_specification [...] ) RETURNS TABLE table_specification
  language_and_access_specification
  function_attribute [...]
  [ USING [ GLOP SET ] GLOP_set_name ]
  EXTERNAL
    [ NAME { external_function_name | 'code_specification [delimiter...]' | 'JAR_ID_specification' } ]
  [ PARAMETER STYLE { SQL | JAVA | SQLTABLE } ]
  [ EXTERNAL SECURITY { DEFINER [ authorization_name ] | INVOKER } ]
  [ EXECUTE MAP = map_name [ COLOCATE USING colocation_name ] ] [;]
You can specify language_and_access_specification and function_attribute [...] in the reverse order.
parameter_specification
{ [ parameter_name ] data_type | , }
table_specification
{ ( column_specification [,...] ) |

  VARYING { COLUMNS ( maximum_output_columns ) |

            USING FUNCTION [ database_name_2. | user_name_2. ]
              [ function_name ]
          }
}
language_and_access_specification
{ language_clause SQL_data_access |
  external_data_access
}
You can specify language_clause and SQL_data_access in the reverse order.
function_attribute
{ SPECIFIC [ database_name_3. | user_name_3. ] specific_function_name |
  PARAMETER STYLE { SQL | JAVA } |
  [NOT] DETERMINISTIC |
  CALLED ON NULL INPUT  
}
code_specification
{ F delimiter function_entry_name |
  { S | C } path_specification
}
JAR_ID_specification
JAR_ID:java_class_name.method_name
  [ ( java_parameter_class [,...] ) returns java_parameter_class ]
data_type
{ INTEGER | SMALLINT | BIGINT | BYTEINT | DATE |

  { TIME | TIMESTAMP } [( fractional_seconds_precision)] [WITH TIME ZONE] |

  INTERVAL YEAR [( precision)] [TO MONTH] |

  INTERVAL MONTH [( precision)] |

  INTERVAL DAY [( precision)]
    [TO { HOUR | MINUTE | SECOND [(fractional_seconds_precision)] } ] |

  INTERVAL HOUR [(precision)]
    [TO { MINUTE | SECOND [(fractional_seconds_precision)] } ] |

  INTERVAL MINUTE [(precision)] [ TO SECOND [(fractional_seconds_precision)] ] |

  INTERVAL SECOND [ ( precision [, fractional_seconds_precision ] ) |

  PERIOD (DATE) |

  PERIOD ({ TIME | TIMESTAMP } [(precision)] [ WITH TIME ZONE ]) |

  REAL |

  DOUBLE PRECISION |

  FLOAT [(integer)] |

  NUMBER [({ integer | *} [, integer ]...)] |

  { DECIMAL | NUMERIC } [(integer [, integer ]...)] |

  { CHAR | BYTE | GRAPHIC } [(integer)] |

  { VARCHAR | CHAR VARYING | VARBYTE | VARGRAPHIC } [(integer)] |

  LONG VARCHAR |

  LONG VARGRAPHIC |

  { BINARY LARGE OBJECT | BLOB | CHARACTER LARGE OBJECT | CLOB }
    (integer [ G | K | M ]) |

  [SYSUDTLIB.] { XML | XMLTYPE } [(integer [ G | K | M ])]
    [ INLINE LENGTH integer ] |

  [SYSUDTLIB.] JSON [(integer [ K | M ])] [ INLINE LENGTH integer ]
    [ CHARACTER SET { UNICODE | LATIN } ] |

  [SYSUDTLIB.] ST_GEOMETRY [(integer [ K | M ])] [ INLINE LENGTH integer ] |

  [SYSUDTLIB.] DATASET [(integer [ K | M ])]
    [ INLINE LENGTH integer ] storage_format |

  [SYSUDTLIB.] { UDT_name | MBR | ARRAY_name | VARRAY_name }
}
column_specification
column_name column_data_type
path_specification
{ I delimiter name_on_server delimiter include_name |
  L delimiter library_name |
  O delimiter name_on_server delimiter object_name |
  P delimiter package_name |
  S delimiter name_on_server delimiter source_name |
  NS delimiter source_file delimiter include_file
}
java_parameter_class
{ primitive [] [ [] ]] | object [ [] ] }
You must type the colored or bold braces.
storage_format
STORAGE FORMAT { Avro | CSV [ CHARACTER SET { UNICODE | LATIN } ] }
  [ WITH SCHEMA [ database. ] schema_name ]