7 Replies Latest reply: Dec 16, 2010 12:47 PM by Mikereiche-Oracle RSS

    ORA-02089: COMMIT is not allowed in a subordinate session

    pedro.dantas
      Hi guys,

      My scenario is: I have a bunch of stored procedures mapped as physical data services in ODSI. Now I'm developing a logical service with some operations. Each operation involves calling a few of the procedures (physical services). When I tried to run it, I got the error

      ORA-02089: COMMIT is not allowed in a subordinate session

      Researching a bit, I found out that it happened because the procedures had inner commit statements, and because I'm using a transactional driver with the logical service, the commit causes it to raise an error.
      Changing the procedures (so they no longer state commits) is not an option. The way I see it, the only other option would be to change the driver to a non-transactional one - each physical service (procedure) would have and transaction of it own. Off course, this means I would lost the atomicity of my logical services, since one procedure could commit and the other not. Any thoughts on the matter?

      Thanks in advance,

      Pedro Ivo