프로시저안에 commit; 명령문을 추가하여 만들고 pg개발 툴에서 call 프로시저 하면 commit이 됩니다.
그러나 apache tomcat에서 Connection pool을 생성하여 autoCommit =false로 한 다음에
사용자 ui에서 프로시저를 call하면 "오류 :잘못된 트랜잭션 마침" 이라는 오류가 나옵니다.
commit권한을 pg쪽에 넘기고 싶은데 ....... jdbc관련쪽 문제 일가요?
autocommit=true 로 설정하고 진행하면 어떤데요?
그렇게하면 잘됩니다.
자바쪽에서 autocommit =false 상태에서 execute 다음에 con.commit() 해도 같은 증상이 납니다.
그런데 pg Stored Procedure에서 단점을 발견했습니다.
Function에서는 Exception정보를 가져올 수 있는데 Stored Procedure에서는 중간 로직에서 에러가 나도
Exception블럭으로 이동을 하지 않습니다. raise notice로 찍어보니 function하고 차이가 나네요..
오라클이나 ms-sql과 같은 정도의 Stored Procedure를 원했는데 이건 좀 무리였던거 같습니다.
자바쪽에서 AutoCommit = true로 설정하고 pg에서 Function으로 해야 할거 같습니다.
그래도 이번 프로젝트에 PG를 사용한다는 거에 의미를 두고 싶습니다.