create or replace PROCEDURE PROCEDURE_RELEASE_PRODUCT (P_FC_CODE IN NUMBER, P_RELEASE_DATE IN VARCHAR2) IS V_RELEASE_NO RELEASE.RELEASE_NUMBER%TYPE; V_PD_CODE FRANCHISE_STOCK.PD_CODE%TYPE; V_AMOUNT FRANCHISE_STOCK.C_AMOUNT%TYPE; CURSOR C1 IS SELECT PD_CODE, (P_AMOUNT - C_AMOUNT) FROM FRANCHISE_STOCK WHERE FC_CODE = P_FC_CODE AND P_AMOUNT <> C_AMOUNT; BEGIN SELECT RELEASE_NUMBER INTO V_RELEASE_NO FROM RELEASE WHERE FC_CODE = P_FC_CODE AND RELEASE_DATE = TO_DATE(P_RELEASE_DATE,'YYYYMMDD'); OPEN C1; LOOP FETCH C1 INTO V_PD_CODE, V_AMOUNT; EXIT WHEN C1%NOTFOUND; INSERT INTO RELEASE_PRODUCT ( RP_NUMBER ,PD_CODE ,AMOUNT ,RELEASE_NUMBER ) VALUES ( SEQ_RP_NUMBER.NEXTVAL ,V_PD_CODE ,V_AMOUNT ,V_RELEASE_NO ); END LOOP; COMMIT; CLOSE C1; EXCEPTION WHEN OTHERS THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 '); END PROCEDURE_RELEASE_PRODUCT;
여기까지가 프로시저구요.
이 밑에서는 저 프로시저를 호출하는 자바에서의 메소드입니다.
자바에서 실행했을 때, 오류메세지가 뜨지않습니다.
디비에서 직접 이 프로시저를 호출하면 값이 잘들어가는데... 자바에서 호출해서 쓰니깐 안되네요. 무슨문제일까요 ㅜㅜ
@Override public int releaseProductProcedure( Connection conn, int fc_code, String date) throws SQLException, ClassNotFoundException { ResultSet rs = null; CallableStatement cstmt = null; System.out.println("releaseProductProcedure > fc_code : " + fc_code); try { String sql = "{call PROCEDURE_RELEASE_PRODUCT(?, ?) }"; cstmt = conn.prepareCall(sql); cstmt.setInt(1,fc_code); cstmt.setString(2, date); rs = cstmt.executeQuery(); } finally { JdbcUtil.close(rs); JdbcUtil.close(cstmt); } return 0; }