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;

  • 相关阅读:
    oracle删除用户及其名下对象
    CENTOS7设置显示中文
    hadoop安装
    linux使用flock文件锁解决crontab冲突问题
    Hive On Spark和SparkSQL
    MapReduce和Tez对比
    安装python的redis模块
    拷贝一个用户下的所有表和数据到另外一个库
    java学习笔记10--泛型总结
    java学习笔记9--内部类总结
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/6687361.html
Copyright © 2011-2022 走看看