1. 简单的 如string相关的函数2. 集合的 aggregate,如sum函数
SONAME 链接库的名称
| 类型 | 描述 |
|---|---|
| STRING | char * |
| INTEGER | 64位int,__int64,unsigned __int64 |
| REAL | double |
| DECIAML | 还没完成,char* |
UDF_INIT:
| 类型 | 名称 | 描述 |
|---|---|---|
| my_bool | maybe_null | 1 如果返回NULL |
| unsigned int | decimals | 用在REAL函数 |
| unsigned long | max_length | 用于STRING函数 |
| char * | ptr | 函数数据的自由指针 |
| my_bool | const_item | 0时参数无关 |
UDF_ARGS:
| 类型 | 名称 | 描述 |
|---|---|---|
| unsigned int | arg_count | 参数个数 |
| enum Item_result * | arg_type | 参数类型 |
| char ** | args | 参数 |
| unsigned long * | lengths | 参数长度 |
| char * | maybe_null | 当置1时,参数可以为NULL |
| char ** | attributes | 属性 |
| unsigned long * | attribute_lengths | 属性长度 |
模板
my_bool MyTest_init(UDF_INIT * initid, UDF_ARGS * args, char * message)
{
}
void MyTest_deinit(UDF_INIT * initid)
{
}
// 以下为不同情况的函数
longlong MyTest(UDF_INIT * initid, UDF_ARGS * args, char * is_null, char * error)
{
}
double MyTest(UDF_INIT * initid, UDF_ARGS * args, char * is_null, char * error)
{
}
char * MyTest(UDF_INIT * initid, UDF_ARGS * args, char * result, unsigned long * length, char * is_null, char * error)
{
}
// END
// 以下用于集合
void MyTest_clear(UDF_INIT * initid, char * is_null, char * error)
{
}
void MyTest_add(UDF_INIT * initid, UDF_ARGS * args, char * is_null, char * error)
{
}
// END
如果有建议或疑问欢迎留言
本文介绍了MySQL中用户定义函数(UDF)的创建方法及其使用细节,包括不同类型函数的初始化、执行及销毁过程,并提供了C++示例代码。
1万+

被折叠的 条评论
为什么被折叠?



