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`:包裹函数的主体部分。
请注意,以上语法中的方括号表示选项是可选的,而大括号表示选项之间是互斥的。你可以根据自己的需求选择适合的选项来定义函数。