Как запустить задание dbms_scheduler с SimpleJdbcCall при загрузке Spring? - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь вызвать задание из службы Spring Boot, где я использую 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, но получаю ту же ошибку.

Буду признателен за любую помощь.Спасибо!

1 Ответ

0 голосов
/ 06 июня 2018

Я решил свою проблему с 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();
      }
...