Java 提交作业,MyBatis将结构作为参数传递给被调用的过程

Java 提交作业,MyBatis将结构作为参数传递给被调用的过程,java,oracle,stored-procedures,mybatis,jobs,Java,Oracle,Stored Procedures,Mybatis,Jobs,我正在使用MyBatis为我的java项目执行查询 我必须调用一个包过程,现在我这样做: { call MY_PACKAGE.very_long_procedure( #{in_custom_type, mode=IN, jdbcType=STRUCT, jdbcTypeName=CUSTOM_TYPE} ) } 其中,自定义类型定义如下: create or replace type tp_calcolo as object ( id_type

我正在使用MyBatis为我的java项目执行查询

我必须调用一个包过程,现在我这样做:

{
    call MY_PACKAGE.very_long_procedure(
        #{in_custom_type, mode=IN, jdbcType=STRUCT, jdbcTypeName=CUSTOM_TYPE}
    )
}
其中,
自定义类型
定义如下:

create or replace type tp_calcolo as object (
    id_type              NUMBER(38,0)
    name_tt              VARCHAR2(200 CHAR)
);
我可以打电话给它,而且很有效

它通过点击按钮来调用。问题是结束需要很多时间,而我的服务器超时设置为120秒,因此在2分钟后,由于请求超时,我得到一个异常

我想做的是将我的过程调用更改为一个作业创建,以便它作为一个线程执行,请求在作业创建之后立即完成

以下是我创建作业的方式:

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    (
      job        => X
     ,what       => 'DECLARE 
  in_custom_type    CUSTOM_TYPE
BEGIN

  in_custom_type := ?; --what to write here? how to insert custom type?

  MY_PACKAGE.very_long_procedure(
    in_custom_type
  ) 
  COMMIT; 
END;'
     ,next_date  => to_date('07/15/2014 11.37.08','mm/dd/yyyy hh24:mi:ss')
     ,no_parse   => FALSE
    );
:JobNumber := to_char(X);
END;
现在,如果我将
替换为
自定义类型('12','PACKAGE CALL')
,因为我正在创建一个新对象。但是如果对象作为struct传递给MyBatis呢

我怎样才能把它传给工作呢


p、 是的,我可以简单地更改服务器超时的设置,但我不能,因为服务器不是我的,我不能直接配置它

您可以将代码封装在一个函数中并调用MyBatis?@Polppan您的意思是在创建作业的模式上创建一个函数,然后从MyBatis调用该函数?不幸的是,不,我不能,所以你只能从MyBatis访问已经创建的过程?@Polppan是的,这是我唯一能做的事情:/