mysql udf扩展_Mysql udf插件自定义实现

UDF官方文档:https://dev.mysql.com/doc/refman/5.7/en/adding-udf.html

参考文章:https://blog.csdn.net/cssxn/article/details/89497942

UDF的调用过程:

30966c52d82dedb59b398602e2ee8f71.png

如果需要内存,则必须将其放入 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*了

244e6cf697e3366db4033c71e292b1e5.png

用到的模板则是如下:

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的展示效果如下:

2dba1d545daf0d716647c171ff3a4b9c.png

这个可以拿来获取参数的值!

调用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

Mysql udf插件自定义实现

标签:res   返回   att   mysql   char   har   创建   attr   调用

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/zpchcbd/p/13227920.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值