我们有很多业务规则存储在存储过程中。我们希望能够在不让所有用户退出数据库的情况下执行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;