CREATE 函数

自定义的函数可以直接使用在 SQL 语句中。

1、标量函数

返回单个值的函数。

CREATE FUNCTION [owner_name.]function_name
(
   [
      { @parameter_name [AS] scalar_parameter_data_type [ =default ] }
      [ ,...n ]
   ]
)

RETURNS scalar_return_data_type

[ WITH <function_option> [ [,] ...n] ]

[ AS ]

BEGIN
    function_body
    RETURN scalar_expression
END

参数 意义
scalar_parameter_data_type 标量数据类型(非 timestamp 和自定义类型)
scalar_return_data_type 标量函数返回值类型
function_body 函数体
scalar_expression 返回值

2、内嵌表值函数

返回一个表,可被用在 FROM 之后。

CREATE FUNCTION [owner_name.]function_name
(
   [
      { @parameter_name [AS] scalar_parameter_data_type [ =default ] }
      [ ,...n ]
   ]
)

RETURNS TABLE

[ WITH <function_option> [ [,] ...n ] ]

[ AS ]

RETURN [ ( ] select-statement [ ) ]

3、多语句表值函数

CREATE FUNCTION [ owner_name.] function_name
(
   [
      { @parameter_name [AS] scalar_parameter_data_type [ =default ] }
      [ ,...n ]
   ]
)

RETURNS @return_variable TABLE <table_type_definition>

[ WITH <function_option> [ [,] ...n ] ]

[ AS ]

BEGIN
    function_body
    RETURN
END

<function_option> ::=

{ ENCRYPTION | SCHEMABINDING }

<table_type_definition> ::=

(
   { column_definition | table_constraint }
   [ ,...n ]
)

参数 意义
ENCRYPTION 加密函数
SCHEMABINDING 绑定到数据库