zoukankan      html  css  js  c++  java
  • Delphi写Sql2000扩展存储过程的例子

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

    1. library project1;
    2. uses
    3.   Windows,
    4.   SysUtils,
    5.   MSODSApi;
    6. ...{$R *.res}
    7. Function GetParamStr(pSrvProc: SRV_PROC; Index : integer; Var Param : String ) : integer;
    8. var
    9.   PType : Byte;
    10.   cbMaxLen , ParaLen : DWORD;
    11.   IsNULL : BOOL;
    12. begin
    13.   Result := NO_ERROR;
    14.   srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, NIL, @IsNULL);
    15.   if PType in [SRVTEXT,SRVVARCHAR,SRVCHAR,SRVNTEXT,
    16.                SRVBIGVARCHAR,SRVBIGCHAR,SRVNVARCHAR,SRVNCHAR] then
    17.     begin
    18.       Param := '''';
    19.       if ParaLen>0 then begin
    20.         SetLength(Param , ParaLen);
    21.         srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, @Param[1], @IsNULL);
    22.       end;
    23.     end
    24.   else begin
    25.     Result := -1;
    26.   end;
    27. end;
    28. Function EpPackFile(pSrvProc: SRV_PROC) : integer;cdecl;
    29. var
    30.   ls1,ls2,ls3 : String;
    31.   n      : integer;
    32. begin
    33.   Result := 1;
    34.   n := srv_rpcparams(pSrvProc);
    35.   if n <> 3 then begin
    36.     //     不是3个参数
    37.   end;
    38.   if   (GetParamStr(pSrvProc,1,ls1)<>NO_ERROR) then begin
    39.     //    不是字符串
    40.   end;
    41.   if    (GetParamStr(pSrvProc,2,ls2)<>NO_ERROR) then begin
    42.     //    不是字符串
    43.   end;
    44.   if    (GetParamStr(pSrvProc,3,ls3)<>NO_ERROR) then begin
    45.     //    不是字符串
    46.   end;
    47.   n := Length(ls1);
    48.   srv_describe(pSrvProc, 1 ,  ''参数'', SRV_NULLTERM,  SRVBIGVARCHAR,
    49.                 n, SRVBIGVARCHAR, n,  NIL);
    50.     srv_setcoldata(pSrvProc, 1 , @ls1[1]);
    51.     srv_sendrow(pSrvProc);
    52.     srv_setcoldata(pSrvProc, 1 , @ls2[1]);
    53.     srv_sendrow(pSrvProc);
    54.     srv_setcoldata(pSrvProc, 1 , @ls3[1]);
    55.     srv_sendrow(pSrvProc);
    56.   srv_senddone(pSrvProc, (SRV_DONE_COUNT or SRV_DONE_MORE), 01);
    57. end;
    58. exports
    59.   EpPackFile Name ''xp_EpPackFile'';
    60. begin
    61. 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);

  • 相关阅读:
    knockout 与checkbox联动
    汤姆大叔的博客--Knockout应用开发指南
    Java 读取Properties配置文件
    [转]“在CMD下面执行命令需要加上exe后缀才能执行“的解决方案
    storm在Ubuntu环境下的单机部署
    [转] java内存分配分析/栈内存、堆内存
    Java 不可变类
    scala入门 case class
    scala入门 模式匹配
    scala入门 包和引入
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/9594819.html
Copyright © 2011-2022 走看看