Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用spring NamedParameterJdbcTemplate从存储过程中检索数据?_Java_Database_Spring_Spring Jdbc - Fatal编程技术网

Java 如何使用spring NamedParameterJdbcTemplate从存储过程中检索数据?

Java 如何使用spring NamedParameterJdbcTemplate从存储过程中检索数据?,java,database,spring,spring-jdbc,Java,Database,Spring,Spring Jdbc,我试图使用NamedParameterJdbcTemplate从oracle存储过程中检索数据,下面是我使用的代码段 ApplicationContext context = new ClassPathXmlApplicationContext("/bean.xml"); DAOImpl dAOImpl = (DAOImpl) context.getBean("daoImpl"); Map<String, String> paramMap = new Has

我试图使用NamedParameterJdbcTemplate从oracle存储过程中检索数据,下面是我使用的代码段

    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;
        }
    });
ApplicationContext context=newclasspathXMLapplicationcontext(“/bean.xml”);
DAOImpl DAOImpl=(DAOImpl)context.getBean(“DAOImpl”);
Map paramMap=新的HashMap();
paramMap.put(“param”、“value1”);
字符串查询=“{..(:param)}”;
List arrList=dAOImpl.getDaoTmplt().execute(查询、参数映射、新的PreparedStatementCallback()){
@凌驾
公共列表未准备好的声明(准备好的声明ps)
抛出SQLException、DataAccessException{
结果集rs=ps.executeQuery();
List arrList=new ArrayList();
while(rs.next()){
字符串[]strArr=新字符串[4];
strArr[0]=rs.getString(“列A”);
strArr[1]=rs.getString(“列_B”);
strArr[2]=rs.getString(“列_C”);
strArr[3]=rs.getString(“列D”);
arrList.add(strArr);
}
rs.close();
返回列表;
}
});
我得到以下提到的例外:

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
PreparedStatementCallback;错误的SQL语法[{CALL..(?)}];嵌套异常是java.sql.SQLException:ORA-06550:第1行第7列:
PLS-00221:“”不是过程或未定义
ORA-06550:第1行第7列:
PL/SQL:忽略语句
当我在TOAD中运行下面的查询时,它返回数据-

select <SCHEMA_NAME>.<package_name>.<stored_proc>('value1') from dual;
从dual中选择..('value1');
如果我在什么地方出错了,有人能纠正我吗


提前谢谢

尝试使用execute而不是executeQuery调用SP

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

尝试使用execute而不是executeQuery调用SP

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