云数据库 GaussDB-DBE_TASK:接口介绍

时间:2023-11-01 16:22:24

接口介绍

高级功能包DBE_TASK支持的所有接口请参见表 DBE_TASK

表1 DBE_JOB

接口名称

描述

DBE_TASK.SUBMIT

提交一个定时任务。作业号由系统自动生成。

DBE_TASK.ID_SUBMIT

提交一个定时任务。作业号由用户指定。

DBE_TASK.CANCEL

通过作业号来删除定时任务。

DBE_TASK.FINISH

禁用或者启用定时任务。

DBE_TASK.UPDATE

修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。

DBE_TASK.CONTENT

修改定时任务的任务内容属性。

DBE_TASK.NEXT_TIME

修改定时任务的下次执行时间属性。

DBE_TASK.INTERVAL

修改定时任务的执行间隔属性。

  • DBE_TASK.SUBMIT

    存储过程SUBMIT提交一个系统提供的定时任务。

    DBE_TASK.SUBMIT函数原型为:

    12345
    DBE_TASK.SUBMIT(what          IN   TEXT,next_time     IN   TIMESTAMP DEFAULT sysdate,interval_time IN   TEXT  DEFAULT 'null',id            OUT  INTEGER);

    当创建一个定时任务(DBE_TASK)时,系统默认将当前数据库和用户名与当前创建的定时任务(DBE_TASK)绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中则需要用通过perform调用该接口函数。如果提交的sql语句任务使用到非public的schema,应该制定表或者函数的schema,或者在sql语句前添加set current_schema = xxx;语句。

    表2 DBE_TASK.SUBMIT接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    what

    text

    IN

    要执行的SQL语句。支持一个或多个‘DDL’(不支持DB相关操作),‘DML’,‘匿名块’,‘调用存储过程的语句’或4种混合的场景。

    next_time

    timestamp

    IN

    下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。

    interval_time

    text

    IN

    用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。

    id

    integer

    OUT

    作业号。范围为1~32767。当使用select调用dbe.submit时,该参数可以省略。

    当在TASK的参数what中创建用户时,日志会记录密码的明文。因此不建议在TASK任务中创建用户。该接口创建的任务不能保证高可用,建议使用PKG_SERVICE.SUBMIT_ON_NODES创建任务,并将job执行节点指定为CCN。

    示例:

    12345
    select DBE_TASK.SUBMIT('call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1');select DBE_TASK.SUBMIT('call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1.0/24');CALL DBE_TASK.SUBMIT('INSERT INTO T_JOB  VALUES(1);  call pro_1(); call pro_2();', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)' ,:jobid);
  • DBE_TASK.ID_SUBMIT

    ID_SUBMIT与SUBMIT语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。

    12345
    DBE_TASK.ID_SUBMIT(id            IN   BIGINT,what          IN   TEXT,next_time     IN   TIMESTAMP DEFAULT sysdate,interval_time IN   TEXT  DEFAULT 'null');

    示例:

    1
    CALL dbe_task.id_submit(101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24');
  • DBE_TASK.CANCEL

    存储过程CANCEL删除指定的定时任务。

    DBE_TASK.CANCEL函数原型为:

    1
    CANCEL(id  IN  INTEGER);
    表3 DBE_TASK.CANCEL接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    id

    integer

    IN

    指定的作业号。

    示例:

    CALL dbe_task.cancel(101);
  • DBE_TASK.FINISH

    存储过程FINISH禁用或者启用定时任务。

    DBE_TASK.FINISH函数原型为:

    1234
    DBE_TASK.FINISH(id           IN   INTEGER,broken       IN   BOOLEAN,next_time    IN   TIMESTAMP  DEFAULT  sysdate);
    表4 DBE_TASK.FINISH接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    id

    integer

    IN

    指定的作业号。

    broken

    Boolean

    IN

    状态标志位,true代表禁用,false代表启用。具体true或false值更新当前job;如果为空值,则不改变原有job的状态。

    next_time

    timestamp

    IN

    下次运行时间,默认为当前系统时间。如果参数broken状态为true,则更新该参数为'4000-1-1';如果参数broken状态为false,且如果参数next_time不为空值,则更新指定job的next_time值,如果next_time为空值,则不更新next_time值。该参数可以省略,为默认值。

    示例:

    12
    CALL dbe_task.finish(101, true);CALL dbe_task.finish(101, false, sysdate);
  • DBE_TASK.UPDATE

    存储过程UPDATE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。

    DBE_TASK.UPDATE函数原型为:

    12345
    dbe_task.UPDATE(id              IN     INTEGER,content         IN    TEXT,next_time       IN     TIMESTAMP,interval_time   IN  TEXT);
    表5 DBE_TASK.UPDATE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    id

    integer

    IN

    指定的作业号。

    content

    text

    IN

    执行的存储过程名或者sql语句块。如果该参数为空值,则不更新指定job的content值,否则更新指定job的content值。

    next_time

    timestamp

    IN

    下次运行时间。如果该参数为空值,则不更新指定job的next_time值,否则更新指定job的next_time值。

    interval_time

    text

    IN

    用来计算下次作业运行时间的时间表达式。如果该参数为空值,则不更新指定job的interval_time值;如果该参数不为空值,会校验interval_time是否为有效的时间类型或interval类型,则更新指定job的interval_time值。如果为字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。

    示例:

    12
    CALL dbe_task.update(101, 'call userproc();', sysdate, 'sysdate + 1.0/1440');CALL dbe_task.update(101, 'insert into tbl_a values(sysdate);', sysdate, 'sysdate + 1.0/1440');
  • DBE_TASK.CONTENT

    存储过程CONTENT修改定时任务的任务内容属性。

    DBE_TASK.CONTENT函数原型为:

    123
    DBE_TASK.CONTENT(id           IN     INTEGER,content      IN TEXT);
    表6 DBE_TASK.CONTENT接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    id

    integer

    IN

    指定的作业号。

    content

    text

    IN

    执行的存储过程调用或者sql语句块。

    • 当content参数是一个或多个可以执行成功的sql语句/程序块/调用存储过程时,该接口函数才能被执行成功,否则会执行失败。
    • 若content参数为一个简单的insert、update等语句,需要在表前加模式名。

    示例:

    12
    CALL dbe_task.content(101, 'call userproc();');CALL dbe_task.content(101, 'insert into tbl_a values(sysdate);');
  • DBE_TASK.NEXT_TIME

    存储过程NEXT_TIME修改定时任务的下次执行时间属性。

    DBE_TASK.NEXT_TIME函数原型为:

    123
    DBE_TASK.NEXT_TIME(id          IN    INTEGER,next_time   IN   TIMESTAMP);
    表7 DBE_TASK.NEXT_TIME接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    id

    integer

    IN

    指定的作业号。

    next_time

    timestamp

    IN

    下次运行时间。

    如果输入的next_time的值小于当前日期值,该job会立即执行一次。

    示例:

    1
    CALL dbe_task.next_time(101, sysdate);
  • DBE_TASK.INTERVAL

    存储过程INTERVAL修改定时任务的执行间隔属性。

    DBE_TASK.INTERVAL函数原型为:

    123
    DBE_TASK.INTERVAL(id              IN      INTEGER,interval_time      IN   TEXT);
    表8 DBE_TASK.INTERVAL接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    id

    integer

    IN

    指定的作业号。

    interval_time

    text

    IN

    用来计算下次作业运行时间的时间表达式。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。interval是否为有效的时间类型或interval类型。

    示例:

    1
    CALL dbe_task.interval(101, 'sysdate + 1.0/1440');

    对于指定job正在运行状态(即job_status为'r')时,不允许通过cancel、update、next_time、content、interval等接口删除或修改job的参数信息。

support.huaweicloud.com/devg-opengauss/opengauss_devg_0712.html