De{*word*81} kernel error, code 3 (Delphi 2 C/S and Oracle transaction bug?)

While using Delph 2.0 C/S's SQL link to connect to Oracle 7.1, I've
encountered the following transactin problem.

With BDE's SQLPassThroughMode set to NOT SHARED, and using strictly
PassThroughSQL and dynamic queries, I've encountered a {*word*193} bug with the
following pseudocode:

procedure Test;
  begin
  myStartTransaction;
  try
    doSomeInsert; // a procedure that does TQuery.execSQL
    doMoreInsert; // a procedure that does TQuery.execSQL
    doOneSelect; //  a procedure that does a dynamic query TQuery.open
                 //  this is where the exception occurs
    myCommit;
  except
    myRollBack;
  end;
end;

On first execution of the above procedure, everything works fine; but upon
re-execution of this procedure, an Access Violation exception will be thrown
when doOneSelect does an OPEN. This happens only if:
  1) the select query is a dynamic query and the parameters are set by
paramByName('SomeParam'):=xyz, and
  2) the select query is in a transaction, and
  3) the select query is preceeded by at least one Insert, and
  4) the transaction is executed a second time.

If you change the select query to a static one or move it before any INSERT
in the transaction, then the error does not occur. The interesting thing is
that the transaction executes successfully the first time, but will fail on
further re-execution.

Using the de{*word*81}, it gives a message of "De{*word*81} kernel error. code 3"
when one tries to set the parameters by ParamByName method. At this point,
the program continues without exception. The AccessViolation exception is
thrown only after you try to OPEN the select query.

Has anyone encountered similar problems? Any ideas?

Thanks
John Tu
j...@warren.med.harvard.edu