首先,我是 Delphi 的新手,所以这可能是一个被忽视的“平凡细节”。[提前抱歉]
'Invalid Transaction Object'
当我尝试通过连接到Oracle 11g DB的 datasnap 服务器运行事务时出现错误。
由于系统细节和公司业务计划,我们选择不使用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;