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的不报错,但是写不上数据。

    海宏原创,转载请注明。

  • 相关阅读:
    阿里轻量应用服务器 Tomcat 注意的地方 Unsupported major.minor version 52.0(unable to load class
    微信小程序-进度条循环播放
    微信小程序-动画
    微信小程序-自定义分享
    微信小程序-引导页
    微信小程序-时间轴
    微信小程序-两次点击不同图片交换图片位置
    Kafka消费者——消费者客户端多线程实现
    Kakfa消费者——原理及分析
    Kafka基础——Kafka架构
  • 原文地址:https://www.cnblogs.com/HaiHong/p/6284359.html
Copyright © 2011-2022 走看看