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`:包裹函數的主體部分。
請注意,以上語法中的方括號表示選項是可選的,而大括號表示選項之間是互斥的。你可以根據自己的需求選擇適合的選項來定義函數。