
# CREATE FUNCTION语句
#### 功能描述
创建一个有 catalog 和数据库命名空间的 catalog function ，需要指定一个 identifier ，可指定 language tag 。 若catalog 中，已经有同名的函数注册了，则无法注册。如果 language tag 是 JAVA 或者 SCALA ，则 identifier 是 UDF 实现类的全限定名。
如果您需要了解创建自定义函数的步骤请参考[自定义函数](https://support.huaweicloud.com/sqlref-flink-dli/dli_08_15082.html)。
#### 语法定义
```
CREATE [TEMPORARY|TEMPORARY SYSTEM] FUNCTION
  [IF NOT EXISTS] [[catalog_name.]db_name.]function_name
  AS identifier [LANGUAGE JAVA|SCALA]
```
#### 语法说明
**TEMPORARY**
创建一个有 catalog 和数据库命名空间的临时 catalog function ，并覆盖原有的 catalog function 。
**TEMPORARY SYSTEM**
创建一个没有数据库命名空间的临时系统 catalog function ，并覆盖系统内置的函数。
**IF NOT EXISTS**
如果该函数已经存在，则不会进行任何操作。
**LANGUAGE JAVA\|SCALA**
Language tag 用于指定 Flink runtime 如何执行这个函数。目前，只支持 JAVA, SCALA，且函数的默认语言为 JAVA。
#### 示例
创建一个名为STRINGBACK的函数。
```
create function STRINGBACK as 'com.dli.StringBack'
```
