达梦数据库如何使用外部c函数

 

1.       linux上编辑一个concat.c的文件,内容如下:

 

#include <string.h>

#include <stdlib.h>

#include   "de_pub.h"

 

de_data C_CONCAT(de_args   *args)

{

          de_data de_ret;

          char*   str1;

          char* str2;

          char* str3;

          int len1;

          int len2;

 

          str1 = de_get_str(args, 0);

          str2 = de_get_str_with_len(args, 1, &len2);

          len1 = strlen(str1);

          str3 = malloc(len1 + len2);

          memcpy(str3, str1, len1);

          memcpy(str3 + len1, str2, len2);

 

          de_str_free(str1);

          de_str_free(str2);

 

          de_ret = de_return_str_with_len(str3, len1 + len2);

          free(str3);

          return de_ret;

}

 

2.       编译一下,得到so文件

--这里需要先将达梦数据库安装上,依赖include目录下的相关文件

gcc   -o concat.so -fPIC -shared concat.c -I /opt/dmdbms_hhm/include

 

3.       在达梦数据库中创建外部函数,注意路径不要写错了,如果是dm用户安装,确保dm用户对这个so文件有权限

CREATE OR REPLACE FUNCTION   MY_CONCAT(VARCHAR, B VARCHAR)

   RETURN VARCHAR   

   EXTERNAL '/opt/dmdbms_hhm/bin/concat.so'   C_CONCAT USING C;

 

4.       调用这个函数测试一下:

达梦数据库如何使用外部c函数