Java 提交作业,MyBatis将结构作为参数传递给被调用的过程
我正在使用MyBatis为我的java项目执行查询 我必须调用一个包过程,现在我这样做: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
{
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是的,这是我唯一能做的事情:/