前提:好像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: