我正在尝试从我的Spring Boot服务调用一个作业,我正在使用JDBCTemplate在DB上运行Selected查询。我使用SimpleJdbcCall
:
JdbcTemplate template = new JdbcTemplate(dataSource);
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(template);
simpleJdbcCall
.withCatalogName("dbms_scheduler")
.withProcedureName("run_job")
.execute(new MapSqlParameterSource("JOB_NAME","My_Job_Name"));
}
但是我收到了这个错误:
Caused by: org.springframework.jdbc.BadSqlGrammarException: CallableStatementCallback; bad SQL grammar [{call DBMS_SCHEDULER.RUN_JOB()}]; nested exception is java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'RUN_JOB' ORA-06550: line 1, column 7: PL/SQL: Statement ignored
我尝试使用.withSchemaName
代替withCatalogName
但我收到同样的错误。
非常感谢任何帮助。 谢谢!
答案 0 :(得分:0)
我使用以下代码解决了CallableStatement
的问题:
String sql = "{call DBMS_SCHEDULER.RUN_JOB(?)}";
try (Connection conn = dataSource.getConnection();
CallableStatement stmt = conn.prepareCall(sql);) {
//Set IN parameter
stmt.setString(1, "CTI_QUEUEHANDLER");
//Execute stored procedure
stmt.execute();
} catch (SQLException e) {
e.printStackTrace();
}