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