标签:res 返回 att mysql char har 创建 attr 调用
UDF官方文档:https://dev.mysql.com/doc/refman/5.7/en/adding-udf.html
参考文章:https://blog.csdn.net/cssxn/article/details/89497942
如果需要内存,则必须将其放入 xxx_init()并释放 xxx_deinit()。
那么也就是在创建udf的dll的时候要实现的是XXX_INIT 和 XXX_DEINIT 这两个函数!
实现模板:
my_bool xxx_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
void xxx_deinit(UDF_INIT *initid);
由于用到的udf调用结果都是字符串,那么这里返回结果就声明为char*了
用到的模板则是如下:
char *xxx(UDF_INIT *initid, UDF_ARGS *args,
char *result, unsigned long *length,
char *is_null, char *error);
UDF_ARGS的结构体如下:
类型为char** attributes的这个,
typedef struct st_udf_args
{
unsigned int arg_count; /* Number of arguments */
enum Item_result *arg_type; /* Pointer to item_results */
char **args; /* Pointer to argument */
unsigned long *lengths; /* Length of string arguments */
char *maybe_null; /* Set to 1 for all maybe_null args */
char **attributes; /* Pointer to attribute name */
unsigned long *attribute_lengths; /* Length of attribute arguments */
void *extension;
} UDF_ARGS;
类型为char** attributes的展示效果如下:
这个可以拿来获取参数的值!
调用UDF的实现模板就是如下:
//初始化
my_bool xxx_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
//自定义函数
char *xxx(UDF_INIT *initid, UDF_ARGS *args,
char *result, unsigned long *length,
char *is_null, char *error);
//反初始化
void xxx_deinit(UDF_INIT *initid);
X
标签:res 返回 att mysql char har 创建 attr 调用
原文地址:https://www.cnblogs.com/zpchcbd/p/13227920.html