Q&A

  • Transaction 성공하고나서 조회시 에러
Oracle은 과 DB2를 사용하는 프로그램인데요(DB2는 첨임다 - -;;)



Oracle은 TDataBase componet이름을 Database1으로

DB2는 Database2로 각각 사용을 하고 있습니다.



1. 그냥 DB2를 조회할때는 잘 작동하다가



2.

Database2.StartTransaction;

try

.

.

.

Database1.StartTransaction;

try

.

.

.

except

Database1.Rollback;

Database2.Rollback;

exit;

end;



Database1.Commit;

Database2.Commit;

except

if Database2.InTransaction = True then

Database2.Rollback;

if Database1.InTransaction = True then

Database1.Rollback;

end;





2의 작업을 성공하고나서

1의 조회를 하면 "prepared statement 'STMT0002' in use."라는 에러가 납니다.

시간은 없는데 어떻게 해결하나요~~??







2  COMMENTS
  • Profile
    나두초보~~ 2001.11.03 08:17
    ㅡㅡ;



    database2.starttransaction;

    ...

    ...

    try

    execsql;

    database2.commit;

    except

    database2.rollback;

    end;

    ......

    ..

    요렇게 처리해야 하지 않을까여.

    ㅡㅡ;

    제가 알기엔 트랜잭션이 시작되었음..

    commit이나, rollback중 하나를 만나야 끝이나죠....



    님 소스에서 보면..

    트랜잭션이 끝나지도 않는데 두번이나 연속해서 실행되니..

    ㅡㅡ; 컴파일러가....이거뭐지 라고..

    에러 나는거 같은데여..

    ㅡㅡ;









    pej wrote:

    > Oracle은 과 DB2를 사용하는 프로그램인데요(DB2는 첨임다 - -;;)

    >

    > Oracle은 TDataBase componet이름을 Database1으로

    > DB2는 Database2로 각각 사용을 하고 있습니다.

    >

    > 1. 그냥 DB2를 조회할때는 잘 작동하다가

    >

    > 2.

    > Database2.StartTransaction;

    > try

    > .

    > .

    > .

    > Database1.StartTransaction;

    > try

    > .

    > .

    > .

    > except

    > Database1.Rollback;

    > Database2.Rollback;

    > exit;

    > end;

    >

    > Database1.Commit;

    > Database2.Commit;

    > except

    > if Database2.InTransaction = True then

    > Database2.Rollback;

    > if Database1.InTransaction = True then

    > Database1.Rollback;

    > end;

    >

    >

    > 2의 작업을 성공하고나서

    > 1의 조회를 하면 "prepared statement 'STMT0002' in use."라는 에러가 납니다.

    > 시간은 없는데 어떻게 해결하나요~~??

    >

    >

    >

  • Profile
    pej 2001.11.05 17:29
    트랜잭션후 조회루틴에서 InTransaction을 체크해보면 False로 나옵니다.

    트랜잭션중은 아닙니다.



    나두초보~~ wrote:

    > ㅡㅡ;

    >

    > database2.starttransaction;

    > ...

    > ...

    > try

    > execsql;

    > database2.commit;

    > except

    > database2.rollback;

    > end;

    > ......

    > ..

    > 요렇게 처리해야 하지 않을까여.

    > ㅡㅡ;

    > 제가 알기엔 트랜잭션이 시작되었음..

    > commit이나, rollback중 하나를 만나야 끝이나죠....

    >

    > 님 소스에서 보면..

    > 트랜잭션이 끝나지도 않는데 두번이나 연속해서 실행되니..

    > ㅡㅡ; 컴파일러가....이거뭐지 라고..

    > 에러 나는거 같은데여..

    > ㅡㅡ;

    >

    >

    >

    >

    > pej wrote:

    > > Oracle은 과 DB2를 사용하는 프로그램인데요(DB2는 첨임다 - -;;)

    > >

    > > Oracle은 TDataBase componet이름을 Database1으로

    > > DB2는 Database2로 각각 사용을 하고 있습니다.

    > >

    > > 1. 그냥 DB2를 조회할때는 잘 작동하다가

    > >

    > > 2.

    > > Database2.StartTransaction;

    > > try

    > > .

    > > .

    > > .

    > > Database1.StartTransaction;

    > > try

    > > .

    > > .

    > > .

    > > except

    > > Database1.Rollback;

    > > Database2.Rollback;

    > > exit;

    > > end;

    > >

    > > Database1.Commit;

    > > Database2.Commit;

    > > except

    > > if Database2.InTransaction = True then

    > > Database2.Rollback;

    > > if Database1.InTransaction = True then

    > > Database1.Rollback;

    > > end;

    > >

    > >

    > > 2의 작업을 성공하고나서

    > > 1의 조회를 하면 "prepared statement 'STMT0002' in use."라는 에러가 납니다.

    > > 시간은 없는데 어떻게 해결하나요~~??

    > >

    > >

    > >