Spring JDBCTemplate Stored Procedure with ResultSet and OutPut Parameter
17,976
We use something like the following in our code
public Map<String, Object> findData() {
List prmtrsList = new ArrayList();
prmtrsList.add(new SqlParameter(Types.VARCHAR));
prmtrsList.add(new SqlParameter(Types.VARCHAR));
prmtrsList.add(new SqlOutParameter("result", Types.VARCHAR));
Map<String, Object> resultData = jdbcTemplate.call(connection -> {
CallableStatement callableStatement = connection.prepareCall("{call STORED_PROC(?, ?, ?)}");
callableStatement.setString(1, "first");
callableStatement.setString(2, "last");
callableStatement.registerOutParameter(3, Types.VARCHAR);
return callableStatement;
}, prmtrsList);
return resultData;
}
Author by
ALI
Updated on June 04, 2022Comments
-
ALI almost 2 years
I created a stored procedure which returns result rows and two output parameters. I am unable to find any thing in spring from which i can get
ResultSet
andoutPutParameters
. I want to achieve something like this using Spring framework.-
Alex78191 over 4 yearsWhy not to use SimpleJdbcCall? stackoverflow.com/a/45542450
-
Alex78191 over 4 yearsYes,
SimpleJdbcCall
cannot returnResultSet
, it returnsList<LinkedCaseInsensitiveMap>
.
-
-
ALI about 6 yearsJust to make this clear from above returned Map<String,Object> resultData you would extract result set as resultData .get("#result-set-1"). where #result-set-1 clearly is first result set
-
Alex78191 over 4 yearsIt's not JDBCTemplate, its JPA.
-
Kathiravan Ramaswamy over 4 yearsThanks for response @Alex78191
-
Alex78191 over 4 yearsWhy do you need to register parameters twice?
-
Alex78191 over 4 yearsWhy is it so verbose?
-
Alex78191 over 4 yearsIsn't it easier to use pure jdbc?
-
Alex78191 about 4 yearsIs it easier because you don’t need to close the statement and commit?