zoukankan      html  css  js  c++  java
  • delphi用TAdoStoredProc调用存储过程,兼容sql2005、2008、2014的远程事务问题

    delphi7写的程序,在sql2000里没问题,调用sql2008、2014里的存储过程时,如果存储过程里操作了大量数据,很容易会莫名其妙的自己撤销掉,但是程序还识别不到,认为还在正常执行。今天尝试换了个控件:TAdoStoredProc,专门调用存储过程的,问题解决了,贴图如下:

    代码:

    //********************************************************************//

    var AProc:TAdoStoredProc;

    .................
    AProc.ProcedureName:='PassMarkBill';
    AProc.Parameters.CreateParameter('@RETURN_VALUE', ftInteger, pdReturnValue, 10, fgUnAssigned);
    AProc.Parameters.CreateParameter('@sID', ftString, pdInput, 50, sID);
    AProc.Parameters.CreateParameter('@sUser', ftString, pdInput, 50, sUserName);
    AProc.Parameters.CreateParameter('@nRate', ftFloat, pdInput, 50, nAddinRate);
    AProc.Parameters.CreateParameter('@lAllowNegative', ftBoolean, pdInput, 50, lAllowNegative);
    AProc.Parameters.CreateParameter('@lUpdateLastDate', ftBoolean, pdInput, 50, lUpdateLastDate);

    //执行
    //rec:=connection.Execute(s); //******用最底层的连接执行没问题********//
    //if (assigned(rec)) and (not rec.EOF) then nR:=rec.Fields[0].Value;
    AProc.ExecProc;
    n:=int( AProc.Parameters.ParamValues['@RETURN_VALUE'] );
    if n<>0 then raise exception.Create('审核出错!返回值非零。'+floatToStr(n));

    ---------------------------------------------------------------------------------------------

    ps:

        上一次解决的办法太麻烦,用的AdoConnection.execute,很难取返回值,这样就省事了。

        网址:http://www.cnblogs.com/HaiHong/p/haihong.html

        标题:遇到个奇怪的问题,同时开启本地和远程两个事务,远程事务是sql2000没问题,是sql2008的不报错,但是写不上数据。

    海宏原创,转载请注明。

  • 相关阅读:
    AliSQL的编译使用
    linux下编译gcc6.2.0
    TransmitFile函数的简单使用
    C++11的简单线程池代码阅读
    TJpgDec使用说明
    TJpgDec—轻量级JPEG解码器
    PPM图片格式及其C读写代码
    linux下vmware的安装、物理分区使用及卸载
    visual stuido 跨解决方案调试
    Proj.4坐标系统创建参数
  • 原文地址:https://www.cnblogs.com/HaiHong/p/6284359.html
Copyright © 2011-2022 走看看