¿El Query no tiene una propiedad Autocommit?
Quizás la conexión tenga esta propiedad para cuando creas algún componente que dependa de esta pero luego a cada uno de estos componentes deberías poder modificarle esta propiedad.
Quedaría algo así:
Código Delphi
[-]
...
with ZQuery_Cambios do
begin
Autocommit := False; conConnection.StartTransaction
Close;
With SQL do
begin
Clear;
if Not Cerrar then
Add('Select ID_SESION from ABRIR_SESION('+IntToStr(IDUsuarioConectado)+','''+
GetPCName+''','''+GetLocalIP+''','''+GetUserWin+''')');
Open;
IDSesion:= Fields[0].AsInteger;
end;
conConnection.Commit;
end;
ShowMessage(IntToStr(IDSesion));
...