对每一个想在SQL语句中使用的函数(假设函数名为func),应该定义对应的C(或 C++ ,C++函数声明要加上extern "C ")函数,
该函数满足以下规则:
1、 func()(必需)
主函数。这是计算函数结果的地方,每行调用一次。SQL 类型与C/C++函数返回类型的对应关系如下:SQL 类型 C/C++ 类型
STRING char *
INTEGER long long
REAL double
2、 func_init()(必需)
func()的初始化函数,只在开始调用一次,它可用于:检查传到func()的参数个数
检查参数类型是否正确或者当主函数被调用时将参数强制转换成需要的类型
分配主函数所需的内存
指定返回结果的最大长度
指定返回REAL类型的函数的最大小数位
指定结果是否允许为NULL
3、 func_deinit()(可选)
func()的结束函数,只在所有行结束后调用一次,它可用于释放初始化函数分配的内存。总结:当一条SQL语句调用func()时,GBase调用初始化函数func_init(),执行所需的初始化工作,例如参数检查或内存分配。如果func_init()返回一个错误,SQL语句返回一条错误消息同时不会调用主函数和结束函数。否则,为每行调用主函数func()一次。在所有行被处理完后,调用结束函数func_deinit(),执行必要的清理工作。
注意:所有函数必须是线程安全的(不仅是主函数,还有初始化和结束函数)。不允许在函数中改变全局共享或静态的变量。如果需要内存,应该在func_init()中分配它并且在func_deinit()中释放它。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




