首先,我是Delphi的新手,可能会忽略一些“平凡的细节”(提前道歉)。
当我尝试通过连接到Oracle 11g数据库的数据捕获服务器运行事务时,我遇到了一个“无效的事务对象”错误。
由于系统细节和公司业务计划,我们选择不使用ClientDataSets来处理事务。相反,我们试图使Snap服务器非常通用,并且只通过接收查询并返回本机类型来处理数据访问。
话虽如此,这里有一些示例代码,让我感到困扰:
function TSnapMethods.TransUpdate: boolean;
var
dbx: TDBXTransaction;
params:TParams;
begin
SqlCon.Open;
dbx := SQLCon.DBXConnection.BeginTransaction(TDBXIsolations.ReadCommitted);
try
params:= TParams.Create(self);
with Params.AddParameter do
begin
name:= 'param';
DataType:= ftWideString;
ParamType:= ptInput;
asString:= 'Bugsville';
end;
with Params.AddParameter do
begin
name:= 'var';
DataType:= ftWideString;
ParamType:= ptInput;
asString:= 'ZZZTOP';
end;
sqlcon.Execute('Update Name set City=:param Where Abrv=:var',params);
SQLcon.CommitFreeAndNil(dbx);//Breaks here...
result:= true;
except
Sqlcon.RollbackFreeAndNil(dbx);//Breaks here also...
result:= false;
end;
end;