首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows最基本的MySQL代码

Windows最基本的MySQL代码
EN

Stack Overflow用户
提问于 2017-03-18 22:27:16
回答 1查看 148关注 0票数 1

我正在尝试为MySQL创建最基本的用户定义函数。

代码语言:javascript
复制
#include <mysql.h>

extern "C" {
    my_bool foo_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
    char *foo(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error);
}

my_bool foo_init(UDF_INIT *initid, UDF_ARGS *args, char *message) {
    return 0;
}

char *foo(UDF_INIT *initid, UDF_ARGS *args,  char *is_null, char *error) {
    return "";
}

它编译得很好,但是当我试图从它创建函数时

代码语言:javascript
复制
CREATE FUNCTION foo RETURNS STRING SONAME "mysql_plugin2.dll"

上面写着SQL Error (1127): Can't find symbol 'foo' in library

EN

回答 1

Stack Overflow用户

发布于 2018-01-14 20:24:07

foo()函数必须更改为char *foo(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error)

  • Add
  1. ()函数。Mysql需要udf_name_deinit.
  2. Compile、udf_name_initudf_name三个函数和名称,并将dll文件放在dll目录下

以下代码尚未经过测试,但它应该可以工作。

代码语言:javascript
复制
#include <mysql.h>

my_bool
foo_init(UDF_INIT *initid,
         UDF_ARGS *args,
         char     *message)
{
    return 0;
}

char *
foo(UDF_INIT      *initid,
    UDF_ARGS      *args,
    char          *result,
    unsigned long *length,
    char          *is_null,
    char          *error)
{
     // specified the return string length
     // see item_func.cc line #3440 and #3454 
     // https://github.com/MariaDB/server/blob/9cc7789e9084e7d59a43f9560870e496843535f9/sql/item_func.cc#L3440
     *length = 0;
     return "";
}

void
foo_deinit(UDF_INIT *initid)
{
    // nothing...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42875584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档