我有一个带有单个整数输出参数和5个varchar输入参数的存储过程,无论我尝试过什么,我似乎都无法获得输出参数。我在数据库上运行了sproc并且它返回了数据,所以我看不出我做错了什么。
有没有人知道如何从simplejdbccall获取输出参数?
我有这样的事情:
SimpleJdbcCall simpleJdbcCall =
new SimpleJdbcCall( getDatasourceForEnvironment() ).withProcedureName( "_Get_Id" ).declareParameters(
new SqlParameter( "MyID", Types.VARCHAR ), new SqlParameter( "MySourceID", Types.VARCHAR ),
new SqlParameter( "MyLocationID", Types.VARCHAR ), new SqlParameter( "MyVisitID", Types.VARCHAR ),
new SqlParameter( "MyVisitDate", Types.VARCHAR ) );
HashMap< String, String > input = new HashMap< String, String >();
input.put( "MyID", myObj.getMyID() );
input.put( "MySourceID", myObj.getMySourceID() );
input.put( "MyLocationID", myObj.getMyLocationID() );
input.put( "MyVisitID", myObj.getMyVisitID() );
input.put( "MyVisitDate", myObj.getMyVisitDate() );
System.out.println( simpleJdbcCall.execute( input ) );
答案 0 :(得分:2)
有两件事我错了:
我连接到错误的数据库。编写更细化的单元 测试显示我的错误。
由于“执行”的返回是一个映射,因此输出参数是大小写 敏感。
长话短说,你不需要做任何特别的事情 - Spring默认包含输出参数。此外,MapSqlParameterSource
是一种更清晰的方法,可以使用这些方法。