There is a stored procedure being called using Prepared statement. I need to call the same using Spring data JPA. I tried with the following solution but it's giving me exception: java.lang.IllegalArgumentException: Type cannot be null
Procedure call using prepared statement:
declare p_transaction_header
transaction_header_rec := NULL; x_voucher_id NUMBER; x_return_status varchar2(200); x_rejection_reason varchar2(4000); begin p_transaction_header.source := ? ; p_transaction_header.total_amount := ? ; p_transaction_header.total_records := ? ; p_transaction_header.external_key_identifier := ? ; open_transaction(p_transaction_header, ?, ?, ?); end;
prepareCall.setString(1, "test");
prepareCall.setBigDecimal(2, traxFileAggregationInfo.getL_TOTAL_ENTERED_DEBIT_AMOUNT());
prepareCall.setBigDecimal(3, traxFileAggregationInfo.getL_TOTAL_RECORDS());
prepareCall.setString(4, fileId);
prepareCall.registerOutParameter(5,java.sql.Types.VARCHAR);
prepareCall.registerOutParameter(6, java.sql.Types.VARCHAR);
prepareCall.registerOutParameter(7,java.sql.Types.VARCHAR);
prepareCall.executeQuery();
vocherId = prepareCall.getString(5);
rejStatus = prepareCall.getString(6);
rejReason = prepareCall.getString(7);
openTransactionBo = new OpenTransactionBo(vocherId, rejStatus, rejReason);
Solution I am trying:
@Procedure(name = "open_transaction")
OpenTransactionBo openTransaction(String source, double totalAmount, int totalRecords, String externalKeyIdentifier);
public class OpenTransactionBo {
private String vocherId;
private String rejStatus;
private String rejReason;
}