2015-12-08 68 views
1

我想从一个使用NamedParameterJdbcTemplate的oracle存储过程中检索数据,下面是我使用相同的代码片段。如何使用spring NamedParameterJdbcTemplate从存储过程中检索数据?

ApplicationContext context = new ClassPathXmlApplicationContext("/bean.xml"); 
    DAOImpl dAOImpl = (DAOImpl) context.getBean("daoImpl"); 

    Map<String, String> paramMap = new HashMap<String, String>(); 
    paramMap.put("param", "value1"); 

    String query = "{ <SCHEMA_NAME>.<package_name>.<stored_proc>(:param) }"; 

    List<String[]> arrList = dAOImpl.getDaoTmplt().execute(query, paramMap,new PreparedStatementCallback<List<String[]>>(){ 

     @Override 
     public List<String[]> doInPreparedStatement(PreparedStatement ps) 
       throws SQLException, DataAccessException { 

      ResultSet rs = ps.executeQuery(); 
      List<String[]> arrList = new ArrayList<String[]>(); 

      while (rs.next()) { 

       String[] strArr = new String[4]; 
       strArr[0] = rs.getString("COLUMN_A"); 
       strArr[1] = rs.getString("COLUMN_B"); 
       strArr[2] = rs.getString("COLUMN_C"); 
       strArr[3] = rs.getString("COLUMN_D"); 

       arrList.add(strArr);  
      } 
      rs.close(); 
      return arrList; 
     } 
    }); 

和我得到提到的例外如下:

PreparedStatementCallback; bad SQL grammar [{ CALL <SCHEMA_NAME>.<package_name>.<stored_proc>(?) }]; nested exception is java.sql.SQLException: ORA-06550: line 1, column 7: 
PLS-00221: '<stored_proc>' is not a procedure or is undefined 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 

当我蟾蜍运行下面的查询返回的数据 -

select <SCHEMA_NAME>.<package_name>.<stored_proc>('value1') from dual; 

可有人请纠正我,如果我某处出错了?

在此先感谢!

回答

0

尝试调用你的SP与执行不带的executeQuery

ps.execute(); 
ResultSet rs = ps.getResultSet(); 
+0

没有,仍然得到同样的错误。 :( –