CREATE FUNCTION¶
概要¶
CREATE [ OR REPLACE ] [TEMPORARY] FUNCTION
qualified_function_name (
parameter_name parameter_type
[, ...]
)
RETURNS return_type
[ COMMENT function_description ]
[ LANGUAGE [ SQL | identifier] ]
[ DETERMINISTIC | NOT DETERMINISTIC ]
[ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]
[ RETURN expression | EXTERNAL [ NAME identifier ] ]
描述¶
使用指定的定義建立新的函數。
當指定 TEMPORARY
時,建立的函數在目前的工作階段中有效且可見,但不會建立永久條目。
每個永久函數都由其合格的函數名稱及其參數類型列表唯一識別。qualified_function_name
的格式必須為 catalog.schema.function_name
。
每個臨時函數都由函數名稱唯一識別。該名稱不能是合格的,也不能與現有的內建函數名稱衝突。
為了建立永久函數,函數命名空間 (格式為 catalog.schema
) 必須先由函數命名空間管理器管理(請參閱 函數命名空間管理器)。
如果存在具有相同簽名(帶有參數類型列表的函數名稱)的函數,則可選的 OR REPLACE
子句會使查詢靜默地取代現有函數。
return_type
需要與例行主體 expression
的實際類型相符,而不執行類型強制轉換。
可以指定一組例行特徵來裝飾函數並指定其行為。每種例行特徵最多可以指定一次。
例行特徵 |
預設值 |
描述 |
---|---|---|
語言子句 |
SQL |
定義函數的語言。 |
決定性特徵 |
NOT DETERMINISTIC |
函數是否具有決定性。 |
空值呼叫子句 |
CALLED ON NULL INPUT |
將 |
範例¶
建立一個新的函數 example.default.tan(double)
CREATE FUNCTION example.default.tan(x double)
RETURNS double
DETERMINISTIC
RETURNS NULL ON NULL INPUT
RETURN sin(x) / cos(x)
如果表格 example.default.tan(double)
尚不存在,則建立它,新增函數描述並明確列出所有支援的例行特徵
CREATE OR REPLACE FUNCTION example.default.tan(x double)
RETURNS double
COMMENT 'tangent trigonometric function'
LANGUAGE SQL
DETERMINISTIC
RETURNS NULL ON NULL INPUT
RETURN sin(x) / cos(x)
建立新的臨時函數 square
CREATE TEMPORARY FUNCTION square(x int)
RETURNS int
RETURN x * x