Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting return value from oracle function using SimpleJdbcCall

I have Oracle function defined as:

function get_user_by_term (inUserTerm number) return number;

Now I wan to call this function using Spring SimpleJdbCCall but not sure how I can read return value since I don't have out param in function. I can't change the Oracle function code.

Code I have so far in Java is:

SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(dataSource)
        .withSchemaName("SCHMA").withCatalogName("PKG_USER")
        .withProcedureName("get_user_by_term");
Map<String, Object> inParamMap = new HashMap<String, Object>();
inParamMap.put("inUserTerm ", userTermId );
SqlParameterSource in = new MapSqlParameterSource(inParamMap);
simpleJdbcCall.execute(in);
like image 600
αƞjiβ Avatar asked Apr 21 '26 05:04

αƞjiβ


1 Answers

After research I found following:

  1. Instead of withProcedureName() method withFunctionName() method should be used.
  2. Instead of execute() method use executeFunction() with return type parameter.

So complete code be like

SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(dataSource)
        .withSchemaName("SCHMA").withCatalogName("PKG_USER")
        .withFunctionName("get_user_by_term");
Map<String, Object> inParamMap = new HashMap<String, Object>();
inParamMap.put("inUserTerm ", userTermId );
SqlParameterSource in = new MapSqlParameterSource(inParamMap);
Long userId = simpleJdbcCall.executeFunction(BigDecimal.class, in).longValue();

Hope this will help others too.

like image 153
αƞjiβ Avatar answered Apr 22 '26 17:04

αƞjiβ