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

标签 java database spring spring-jdbc

我正在尝试使用 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;
        }
    });

我遇到了下面提到的异常:

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

当我在 TOAD 中运行以下查询时,它返回数据 -

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

如果我哪里出错了,有人可以纠正我吗?

提前致谢!

最佳答案

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

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

关于java - 如何使用 spring NamedParameterJdbcTemplate 从存储过程中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34164644/

相关文章:

java - 在 Spring 初始化期间终止严重错误的应用程序?

java - 不使用默认构造函数反序列化 JSON

java - MultipartEntityBuilder 和 Charset

sql - Oracle数据库搜索所有表中的字符串,返回行数据

mysql 多表/多模式性能

java - 在 Spring 集成中主程序本身出现编译时错误

java - 框架中间的 JPanel

java - 带有两个标签的 JOptionPane

php - 如果我通过将搜索字段保留为空白来点击搜索按钮,并且需要额外的一个 HTML 按钮来显示所有条目,为什么要显示 mysql 数据库中的所有数据呢?

java - IntelliJ IDEA spring boot 热重载手动保存?