Informix自定义函数的语法如下:
CREATE FUNCTION function_name ([parameter1 [datatype1][,...]])
RETURN datatype
[WITH [(clause)]]
[LANGUAGE ] language_name
[DETERMINISTIC]
[SQL DATA ACCESS {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}]
[COMMENT 'string']
[EXTERNAL NAME 'external_name']
[PARAMETER STYLE [SQL | GENERAL] [JAVA | C] [LANGUAGE 'language_name']]
[FENCED | NOT FENCED]
[DBINFO | NO DBINFO]
[STATEMENT CACHE [size | DEFAULT | OFF]]
[RETURN NULL ON NULL INPUT | CALLED ON NULL INPUT]
[NO EXTERNAL ACTION | EXTERNAL ACTION]
BEGIN
-- Function body
END其中,各个关键字的含义如下:
- `CREATE FUNCTION`:用于创建函数。 - `function_name`:函数的名称。 - `parameter1`:函数的参数名称。 - `datatype1`:参数的数据类型。 - `RETURN datatype`:指定函数的返回值类型。 - `WITH [(clause)]`:指定函数的选项和特性。 - `LANGUAGE`:指定函数的编程语言。 - `DETERMINISTIC`:指定函数是否是确定性的。 - `SQL DATA ACCESS`:指定函数对数据库的访问方式。 - `COMMENT`:为函数添加注释。 - `EXTERNAL NAME`:指定外部函数的名称。 - `PARAMETER STYLE`:指定函数的参数风格。 - `FENCED`:指定函数是否运行在独立的地址空间中。 - `DBINFO`:指定函数是否可以访问数据库的信息。 - `STATEMENT CACHE`:指定函数的语句缓存大小。 - `RETURN NULL ON NULL INPUT`:指定函数在输入为NULL时的返回值。 - `NO EXTERNAL ACTION`:指定函数是否可以修改数据。 - `BEGIN`和`END`:包裹函数的主体部分。
请注意,以上语法中的方括号表示选项是可选的,而大括号表示选项之间是互斥的。你可以根据自己的需求选择适合的选项来定义函数。