편집 :이 질문에 대한 답변 중 일부는 다른 문제점을 가진 다른 사용자에게 도움이 될 수 있지만 솔루션은 실제로 데이터베이스 연결의 자동 커미트 기능과 관련된 일부 버그와 관련이 있습니다! 쿼리를 실행 한 후 커밋을 실행하면 데이터베이스에 변경 내용이 반영되므로 아래에 표시된 코드가이 유형의 저장 프로 시저를 호출하는 올바른 방법입니다.Java : 오라클 데이터베이스의 스토어드 프로 시저 호출
Oracle에서 간단한 저장 프로 시저를 호출하려고합니다. 데이터 베이스.
procedure clear_orderProcDtlByOrdId(p_order_id in order_header.order_id%type,
p_transaction_id in sl_order_processing_dtl.transaction_id%type DEFAULT NULL,
p_item_action_id in sl_order_processing_dtl.item_action_id%type DEFAULT NULL)
...
내가 전혀 오류를받을 수없는이
try
{
CallableStatement storedProc = conn.prepareCall("{call PKG_PI_FRAUD.clear_orderProcDtlByOrdId(?)}");
storedProc.setString(1, orderID);
storedProc.execute();
}
catch (SQLException e)
{
e.printStackTrace();
}
같은 외모에 문제가 자바 코드, 그러나 거기 번호 :
절차는 다음과 같습니다 데이터베이스 변경 사항이 반영됩니다. SQL Developer에서 프로 시저를 실행하면 결과가 표시됩니다. 커밋 문제로 인한 것일 수 있다고 생각했지만, 내가 만든 연결은 자동 커밋 모드입니다.
도움이 될 것입니다.
은 DB에서 VARCHAR로 orderID를 설정 했습니까? – PermGenError
@PremGenError orderID는 DB의 VARCHAR2입니다 – aeros
다음 줄 2의 매개 변수를 따옴표로 묶으십시오. storedProc.setString ("1", "orderID"); – twoleggedhorse