SQL SERVER2000存储过程调用D7写的DLL

本文介绍了如何在SQL Server 2000中通过存储过程调用Delphi(D7)编写的ActiveX DLL来发送邮件。首先,创建一个具有OLE自注册特性的DLL,然后注册该DLL,最后在存储过程中使用sp_OACreate和sp_OAMethod等系统存储过程来调用DLL的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:好像MSSQL2000要打上SP4补丁才可以使用以下功能。具体是否如此,没有准确测试。 

这里很重要---注:SQL SERVER2000中调用第三方DLL有它的要求,那就是第三方DLL一定要具有OLE自注册特征;那么符合它这点要求的有COM组件,例如我之前的文章[SQL SERVER2000调用C#写的DLL]中就是带有[COMVISIBLE]标识,使它具有COM组件的特征,这样SQL SERVER才能调用;

 从上面理解点出发,我们不难使用D7写这样的程序。(同样以发邮件为例)

1、为了让宿主程序是个DLL,我们选择新建一个ActiveX-->ActiveX Library, 工程文件名为ProfitSkyActiveX, 保存,在这工程下,再新建一个ActiveX-->Automation Object,文件名改为ProfitSkyActiveX, 将自动生成的Unit1改名为ProfitSkyX, 其它选项默认,保存后,如下图:

 

ProfitSkyActiveX.dll

  |__ProfitSkyActiveX_TLB.pas

  |__ProfitSkyX.pas

 

在弹出的ProfitSkyActivex.tlb窗体中(在ProfitSkyActiveX_TLB.pas中按F12),点IProfitSkyX,右击新建方法,名为SendEmail,在右边的parameters框中,保持Return type为HRESULT,在下面的参数列表中填完正常的各种参数之后,再增加一个参数(名字为ResultOut, type为variant * , Modifier为[out,retval]) , 做完后,按刷新并关闭窗口,这样系统已自动产生了代码,在ProfitSkyX.pas中,找到Sendemail并完善它,编译后,就产生两个文件,一个DLL和TLB;

 

2、注册DLL,使用Regsvr32 DLL文件名;(一定要注册,这样SQLSERVER才能调用)

3、编写存储过程调用:

 

函数原型:

    function SendEmail(const Host: WideString; Port: SYSUINT; const UserName,
      PassWord: WideString; NeedToAuthentication: WordBool;
      const FromAddress, ToAddress, CCAddress, BCCAddress, ReplyToAddress,
      Subject, Body:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值