【问题标题】:How to trigger a dbms_scheduler job from Java repo in Spring?如何在 Spring 中从 Java 存储库触发 dbms_scheduler 作业?
【发布时间】:2018-07-31 12:10:21
【问题描述】:

我有一个可以直接使用命令运行的 Oracle DB 调度程序作业:

EXEC dbms_scheduler.run_job('MY_SCHEDULER_JOB');

现在我正在尝试从我的 Java SpringBoot 服务调用相同的作业,我在 Repo 中使用 JDBCTemplate 在数据库上运行 Select 和 Update 查询。

我已经查看并没有找到任何有关如何执行此操作的帮助。将不胜感激。

谢谢!

【问题讨论】:

    标签: java oracle spring-boot jdbctemplate dbms-scheduler


    【解决方案1】:

    我会为此使用SimpleJdbcCall

    SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(getJdbcTemplate());
    simpleJdbcCall
          .withCatalogName("dbms_scheduler")
          .withProcedureName("run_job")
          .execute(new MapSqlParameterSource("JOB_NAME", "MY_SCHEDULER_JOB"));
    

    顺便说一句,你可以通过这里

    作业名称或以逗号分隔的条目列表,其中每个是名称 现有的工作

    所以这也是有效的情况:

    new MapSqlParameterSource("JOB_NAME", "JOB1, JOB2, JOB3")
    

    【讨论】:

    • 感谢您的回复。我试过了,但它遇到了以下错误。 org.springframework.dao.InvalidDataAccessApiUsageException: Unable to determine the correct call signature - no procedure/function/signature for 'RUN_JOB' 我试图创建一个可以运行该作业的 SP,但这似乎也不起作用。 SP 无法编译。
    • 尝试使用.withSchemaName 而不是. withCatalogName
    • 试过了,同样的错误失败。似乎无法通过这种方式访问​​ oracle 包 dbms_scheduler。有没有办法访问这个包,只有这样我们才能访问里面的run_job SP。
    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 2016-10-09
    • 2012-12-10
    • 1970-01-01
    • 2017-01-31
    • 2017-09-16
    • 1970-01-01
    • 2021-01-21
    相关资源
    最近更新 更多