Previously i have posted about calling pl/sql function in ADF Application
This post is about calling stored procedure in ADF Application , a very basic requirement.
Sometimes we need to call a procedure that has OUT parameters , these parameters are used to return value from procedure. There may be n- numbers of OUT parameters in a procedure
In this post i am discussing same so for demo purpose I have created a PL/SQL procedure that takes EmployeeId as input parameter and return First Name and Last Name as OUT parameter (Using Oracle HR Schema)
CREATEORREPLACEPROCEDURE PROC_GET_EMPNAME(EMP_NO INNUMBER, F_NAME OUT VARCHAR2,L_NAME OUT VARCHAR2) IS
BEGIN
SELECT FIRST_NAME INTO F_NAME FROM EMPLOYEES WHERE EMPLOYEE_ID=EMP_NO;
SELECT LAST_NAME INTO L_NAME FROM EMPLOYEES WHERE EMPLOYEE_ID=EMP_NO;
END;
Now see code to call procedure from ADF Application
So this is how we can use procedure with OUT parameters , you can change code according to number of OUT and IN parameters your procedure has
See output on console
Cheers :) Happy Learning
/**Method to call Database function
* @param stmt
* @param bindVars
* @return
*/
protectedvoidcallStoredProcOut(String stmt, Object[] bindVars){
CallableStatement st =null;
try{
//Creating sql statement
st =this.getDBTransaction().createCallableStatement("begin "+ stmt +";end;",0);
// Set the bind values of the IN parameters (Employee Id is Input parameter here)
st.setObject(1, bindVars[0]);
//Register out parameters and their types (In this case procedure has 2 out parameters)
st.registerOutParameter(2, Types.VARCHAR);
st.registerOutParameter(3, Types.VARCHAR);
// Execute the statement
st.executeUpdate();
// Print Return Values of out parameters
System.out.println("First Name-"+ st.getString(2)+" Last Name-"+st.getString(3));
}catch(SQLException e){
thrownewJboException(e.getMessage());
}finally{
if(st !=null){
try{
st.close();
}catch(SQLException e){
}
}
}
}
//Call PL/SQL procedure using this helper method
publicvoidcallStoredProcedure(){
//Here we will pass only input parameter but write procedure signature for all parameters (IN and OUT)
callStoredProcOut("PROC_GET_EMPNAME(?,?,?)",new Object[]{110});
}
So this is how we can use procedure with OUT parameters , you can change code according to number of OUT and IN parameters your procedure has
See output on console
Cheers :) Happy Learning