暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库外部函数测试

原创 🍭 2023-06-17
1024

达梦8-外部函数

为了能够在创建和使用自定义 DMSQL 程序时,使用其他语言实现的接口,DM8 提供了 C、JAVA 外部函数,这样即使外部函数在执行中出现了任何问题,都不会影响到服务器的正常执行。

无论是 C 外部函数还是 JAVA 外部函数,都需要将动态库或 jar 包上传到服务器端或在服务器端编译生成动态库或 jar 包,系统管理员应对动态库和 jar 包进行严格审查,以防止外部函数中包含病毒或恶意代码,引发安全问题。为了保证数据库的安全性和灵活性,DM 提供了 ini 参数 ENABLE_EXTERNAL_CALL 来开关外部函数功能,默认情况下,数据库会关闭外部函数的创建和执行功能。

需要注意的是,DM 不支持 C 或 JAVA 外部函数存放在 ASM 文件系统上的调用。

测试c外部函数时是可以成功运行的
2023-02-17-11-21-06-image

但是Java运行时却会有问题,连接外部函数没有问题,就是不论是整数还是字符串都输出为空

2023-02-17-11-23-32-image 2023-02-17-11-27-16-image

​ 本应该输出3,ASNK hello,但是都输出错误,感觉可能是因为达梦数据库版本太低的问题,电脑上安装的是达梦7

Snipaste_2023-02-17_14-20-36

​ 随后在centos7.6下安装了达梦,使用C/Java的外部函数,发现是可行的

Snipaste_2023-02-17_14-04-56 Snipaste_2023-02-17_14-04-25 Snipaste_2023-02-17_14-04-43

oracle外部函数

​ 编写一个简单的C程序,就是100*输入的数:

test(n) int n; { int lucky_money; lucky_money=100*n; return (lucky_money); }

​ 对编写的C程序编译生成动态链接库文件,然后copy到oarcle安装目录的bin文件夹下

oracle外部函数-2

​ 创建库文件,指向test.so,将权限赋予指定用户,然后定义函数,该函数最后会调用链接库文件:

IMG_20230218_145957

​ 验证外部函数:

oracle外部函数-1
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论