入力文字列から、指定された開始位置から始まる部分文字列を取り出すスカラー関数の例を、以下に示します。 このスカラー関数では、パラメータ スタイルSQLを使用します。
/***** C source file name: substr.c *****/ #define SQL_TEXT Latin_Text #include <sqltypes_td.h> #include <string.h> #define IsNull -1 #define IsNotNull 0 void udf_scalar_substr( VARCHAR_LATIN *inputString, INTEGER *start, VARCHAR_LATIN *result, int *inputStringIsNull, int *startIsNull, int *resultIsNull, char sqlstate[6], SQL_TEXT extname[129], SQL_TEXT specific_name[129], SQL_TEXT error_message[257] ) { int inputStrLength; /* Return Null value on Null Input */ if ((*inputStringIsNull == IsNull)) { strcpy(sqlstate, "22004"); strcpy((char *) error_message, "Null value not allowed."); *resultIsNull = IsNull; return; } strcpy((char *) error_message, " "); *resultIsNull = IsNotNull; inputStrLength = strlen((const char *) inputString); if (*start < 1) { strcpy((char *) result, (const char *) inputString) ; return; } if (*start > inputStrLength) { strcpy((char *) result, ""); return; } strcpy((char *) result, (const char *) inputString + (*start - 1)); }