程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Delphi寫Sql2000擴展存儲過程的例子

Delphi寫Sql2000擴展存儲過程的例子

編輯:.NET實例教程
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);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved