zoukankan      html  css  js  c++  java
  • 从数据池中捞取的存储过程控件使用完以后必须unprepare

    从数据池中捞取的存储过程控件使用完以后必须unprepare,否则会造成输入参数是仍是旧的BUG。

    提示:动态创建的存储过程控件无此BUG。此BUG只限于从数据池中捞取的存储过程控件。

    function TServerMethods1.spOpen(const accountNo, spName: WideString; inParams: OleVariant): OleVariant;
    var
    d: TfrmDB;
    params: TParams;
    i: Integer;
    param: TFDParam;
    begin
    Result := null;
    if (accountNo = '') or (spName = '') then
    Exit;
    d := GetDBPool(accountNo).Lock;
    if not Assigned(d) then
    Exit;
    try
    try
    d.procOpen.Close;
    d.procOpen.params.Clear;
    d.procOpen.StoredProcName := spName;
    d.procOpen.Prepare;
    params := TParams.Create;
    try
    UnpackParams(inParams, params);
    for i := 0 to params.Count - 1 do
    begin
    param := d.procOpen.FindParam(params[i].Name);
    if not Assigned(param) then
    Continue;
    param.value := params[i].value;
    end;
    finally
    params.Free;
    end;
    Result := d.dspProcOpen.Data;
    except
    on e: Exception do
    begin
    Result := null;
    Log.WriteLog('TServerMethods1.spOpen ' + e.Message);
    Exit;
    end;
    end;
    finally
    d.procOpen.Close;
    d.procOpen.Unprepare;  // 从数据池中捞取的存储过程控件使用完以后必须unprepare
    GetDBPool(accountNo).Unlock(d);
    end;
    end;

  • 相关阅读:
    Redis 安装
    Git的安装和使用
    HTML5 本地存储+layer弹层组件制作记事本
    PHP 微信公众号开发
    PHP 微信公众号开发
    Electron 安装与使用
    HTML5 桌面消息提醒
    Composer安装和使用
    玄 学
    区间内的真素数
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/6687361.html
Copyright © 2011-2022 走看看