如何在 Spring 引导中使用 SimpleJdbcCall 触发 dbms_scheduler 作业?

How to trigger a dbms_scheduler job with SimpleJdbcCall in Spring boot?

我正在尝试从我的 Spring 引导服务调用一个作业,我在其中使用 JDBCTemplate 来 运行 数据库上的选定查询。我使用 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 但我收到了同样的错误。

非常感谢任何帮助。 谢谢!

我使用以下代码解决了 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();
      }