入力文字列から、指定された開始位置から始まる部分文字列を取り出すスカラー関数の例を、以下に示します。 このスカラー関数では、パラメータ スタイル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));
}