如何释放存储过程以便可以执行ddl升级

时间:2016-08-24 23:00:40

标签: stored-procedures firebird ddl

我们有很多业务规则存储在存储过程中。我们希望能够在不让所有用户退出数据库的情况下执行DDL升级。

在Delphi中是否有某种方法可以针对存储过程运行查询“从SP_SuperbillSummary(:patientID)中选择*”,当我关闭查询时,sp_superbillsummary又回到“未使用”状态。

这只是一个例子。我们有40多个存储过程,一旦Delphi使用它们一旦“使用”并保持这种状态。

DB:Firebird 2.1最新的错误修复版本。
语言:Delphi 2007专业版。 w / IB_Objects库用于数据库访问。

示例代码:

procedure TSuperBillList.LoadHeadersByPatient(PatientID: Integer;
  AExcludeSuperBillID: Integer = 0);
{$REGION 'SQLText' }
const SQLText =
  'SELECT *  ' +
    '  FROM  ' +
    '    SP_SUPERBILLHEADERS(:PATIENTID)';
{$ENDREGION}

var
  SB: TSuperBill;
begin
  ClearObjects;
  SetUpQuery(SQLText);
  with q do
  begin
    ParamByName('PATIENTID').AsInteger := PatientID;
    Open;
    try
      while not EOF do
      begin
        {Do some stuff here}
        Next;
      end;
    finally
      q.IB_Transaction.Rollback;
      Close;
    end;
  end;
  SetLoadedAt(Now);
end;

0 个答案:

没有答案