当前位置:首页 > 芯闻号 > 充电吧
[导读]Delphi写Sql2000扩展存储过程的例子library project1; uses   Windows,   SysUtils,   MSODSApi; ...{$R *.res} Fun

Delphi写Sql2000扩展存储过程的例子

library project1; uses   Windows,   SysUtils,   MSODSApi; ...{$R *.res} Function GetParamStr(pSrvProc: SRV_PROC; Index : integer; Var Param : String ) : integer; var   PType : Byte;   cbMaxLen , ParaLen : DWORD;   IsNULL : BOOL; begin   Result := NO_ERROR;   srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, NIL, @IsNULL);   if PType in [SRVTEXT,SRVVARCHAR,SRVCHAR,SRVNTEXT,                SRVBIGVARCHAR,SRVBIGCHAR,SRVNVARCHAR,SRVNCHAR] then     begin       Param := '''';       if ParaLen>0 then begin         SetLength(Param , ParaLen);         srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, @Param[1], @IsNULL);       end;     end   else begin     Result := -1;   end; end; Function EpPackFile(pSrvProc: SRV_PROC) : integer;cdecl; var   ls1,ls2,ls3 : String;   n      : integer; begin   Result := 1;   n := srv_rpcparams(pSrvProc);   if n <> 3 then begin     //     不是3个参数   end;   if   (GetParamStr(pSrvProc,1,ls1)<>NO_ERROR) then begin     //    不是字符串   end;   if    (GetParamStr(pSrvProc,2,ls2)<>NO_ERROR) then begin     //    不是字符串   end;   if    (GetParamStr(pSrvProc,3,ls3)<>NO_ERROR) then begin     //    不是字符串   end;   n := Length(ls1);   srv_describe(pSrvProc, 1 ,  ''参数'', SRV_NULLTERM,  SRVBIGVARCHAR,                 n, SRVBIGVARCHAR, n,  NIL);     srv_setcoldata(pSrvProc, 1 , @ls1[1]);     srv_sendrow(pSrvProc);     srv_setcoldata(pSrvProc, 1 , @ls2[1]);     srv_sendrow(pSrvProc);     srv_setcoldata(pSrvProc, 1 , @ls3[1]);     srv_sendrow(pSrvProc);   srv_senddone(pSrvProc, (SRV_DONE_COUNT or SRV_DONE_MORE), 0, 1); end; exports   EpPackFile Name ''xp_EpPackFile''; begin end.

编译后放入binn目录,在sql中添加并测试,代码如下:

 

Use Master;
IF object_id(''xp_EpPackFile'') IS NOT NULL EXEC sp_dropextendedproc ''xp_EpPackFile'';
EXEC sp_addextendedproc ''xp_EpPackFile'', ''project1.dll'';
EXEC master..xp_EpPackFile ''aa'',''bb'',''cc'';
EXEC sp_dropextendedproc ''xp_EpPackFile'';
DBCC SPEncrypt(FREE);

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭