Oracle调用delphi动态库

 


http://oracle.**.com/induction/715351.html


注:以下程序在DELPHI7+ORACLE9i中测试通过

1、首先用DELPHI编制一个DLL程序,当然用VB,VC其它语言也可以,
本人最近常用DELPHI,所以以下DLL采用DELPHI程序编制:

//Project1.dpr工程文件
library Project1;
uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas';

{$R *.res}
exports
dlltest;
begin
end.


///unit1.pas接口函数实现文件
unit Unit1;

interface

function dlltest(a,b:double): double; cdecl; //接口函数

implementation
function dlltest(a,b:double): double; cdecl; //接口函数
begin
result:=a*b;
end;

end.

2、将编译生成的Project1.dll 拷贝至$ORACLE_HOME/bin路径下,本人$ORACLE_HOME=C://oracle//ora92
所以将Project1.dll拷贝至C://oracle//ora92//bin//路径。


3、ORACLE 数据库中增加一个library 名字为 "MYLIB"

create or replace library MYLIB
as 'C://oracle//ora92//bin//Project1.dll';

4、ORACLE 数据库中增加一个function 名字为 "mytest1"
CREATE OR REPLACE FUNCTION mytest1(a DOUBLE PRECISION,b DOUBLE PRECISION) RETURN DOUBLE PRECISION AS
LANGUAGE C NAME "dlltest"
LIBRARY MYLIB
PARAMETERS (a DOUBLE,b DOUBLE,
RETURN DOUBLE );


5、测试一下

select mytest1(3.51,8.2) from dual;

------------返回28.782

6、到此一个简单的例子完成,其实这是一个最简单的例子,实际应用中需要根据需求去做,
本人做这个例子只是给各位网友开路,实际应用还需参考ORACLE帮助文档。




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=570805


-----------------------------------------------------------------

修改 function dlltest(a,b:double): double; cdecl; //接口函数
begin
result:=a*b;
end;
为你所需要的功能即可,如 winexec(....)


__________________
--------------------------------------------------------OS:Windows 2003DB:Oracle 8.1.7 For Winnt超级菜鸟。向各位大大问好。--------------------------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值