
# DBE_SCHEDULER
#### 接口介绍
高级功能包DBE_SCHEDULER支持通过调度（schedule）和程序（program）更加灵活地创建定时任务。支持的所有接口请见[表1]。
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
DBE_SCHEDULER支持CN节点间同步定时任务，不支持不同CN节点间创建同名任务。
由于505.0.0之前版本未实现同步功能，所有同步接口都只针对505.0.0及之后版本的数据进行同步操作。
升级前会对旧版本CN是否存在同名job进行检查，如果旧版本CN间同名数据库下存在名称相同、且job创建节点不相同的job，报错提示用户删除job后尝试重新升级。
 表1DBE_SCHEDULER 
| 接口名称                                                                                                                           | 描述         |
|:---|:---|
| [DBE_SCHEDULER.CREATE_JOB] | 创建定时任务。    |
| [DBE_SCHEDULER.DROP_JOB]                        | 删除定时任务。    |
| [DBE_SCHEDULER.DROP_SINGLE_JOB]                 | 删除单个定时任务。  |
| [DBE_SCHEDULER.SET_ATTRIBUTE]                    | 设置对象属性。    |
| [DBE_SCHEDULER.RUN_JOB]                             | 运行定时任务。    |
| [DBE_SCHEDULER.RUN_BACKEND_JOB]                   | 后台运行定时任务。  |
| [DBE_SCHEDULER.RUN_FOREGROUND_JOB]                | 前台运行定时任务。  |
| [DBE_SCHEDULER.STOP_JOB]                           | 停止定时任务。    |
| [DBE_SCHEDULER.STOP_SINGLE_JOB]                    | 停止单个定时任务。  |
| [DBE_SCHEDULER.GENERATE_JOB_NAME]                 | 生成定时任务名。   |
| [DBE_SCHEDULER.CREATE_PROGRAM]                  | 创建程序。      |
| [DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT]             | 定义程序参数。    |
| [DBE_SCHEDULER.DROP_PROGRAM]                      | 删除程序。      |
| [DBE_SCHEDULER.DROP_SINGLE_PROGRAM]               | 删除单个程序。    |
| [DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE]             | 设置定时任务参数值。 |
| [DBE_SCHEDULER.CREATE_SCHEDULE]                      | 创建调度。      |
| [DBE_SCHEDULER.DROP_SCHEDULE]                     | 删除调度。      |
| [DBE_SCHEDULER.DROP_SINGLE_SCHEDULE]             | 删除单个调度。    |
| [DBE_SCHEDULER.CREATE_JOB_CLASS]                     | 创建定时任务类。   |
| [DBE_SCHEDULER.DROP_JOB_CLASS]                      | 删除定时任务类。   |
| [DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS]              | 删除单个定时任务类。 |
| [DBE_SCHEDULER.GRANT_USER_AUTHORIZATION]           | 赋予用户特殊权限。  |
| [DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION]           | 撤销用户特殊权限。  |
| [DBE_SCHEDULER.CREATE_CREDENTIAL]                 | 创建证书。      |
| [DBE_SCHEDULER.DROP_CREDENTIAL]                    | 销毁证书。      |
| [DBE_SCHEDULER.ENABLE]                           | 启用对象。      |
| [DBE_SCHEDULER.ENABLE_SINGLE]                      | 启用单个对象。    |
| [DBE_SCHEDULER.DISABLE]                            | 停用对象。      |
| [DBE_SCHEDULER.DISABLE_SINGLE]                   | 停用单个对象。    |
| [DBE_SCHEDULER.EVAL_CALENDAR_STRING]                 | 分析调度任务周期。  |
| [DBE_SCHEDULER.EVALUATE_CALENDAR_STRING]           | 分析调度任务周期。  |
   
- DBE_SCHEDULER.CREATE_JOB
  创建一个定时任务，同步任务到所有CN节点。
  DBE_SCHEDULER.CREATE_JOB函数原型可以分为4种：
  ```
  -- 内联调度和程序的定时任务
  DBE_SCHEDULER.CREATE_JOB(
  job_name TEXT,
  job_type TEXT,
  job_action TEXT,
  number_of_arguments INTEGER             DEFAULT 0,
  start_date TIMESTAMP WITH TIME ZONE     DEFAULT NULL,
  repeat_interval TEXT                    DEFAULT NULL,
  end_date TIMESTAMP WITH TIME ZONE       DEFAULT NULL,
  job_class TEXT            DEFAULT 'DEFAULT_JOB_CLASS',
  enabled BOOLEAN                         DEFAULT FALSE,
  auto_drop BOOLEAN                       DEFAULT TRUE,
  comments TEXT                           DEFAULT NULL,
  credential_name TEXT                    DEFAULT NULL,
  destination_name TEXT                   DEFAULT NULL
  )
  -- 引用创建好的调度和程序的定时任务
  DBE_SCHEDULER.CREATE_JOB(
  job_name TEXT,
  program_name TEXT,
  schedule_name TEXT,
  job_class TEXT            DEFAULT 'DEFAULT_JOB_CLASS',
  enabled BOOLEAN                         DEFAULT FALSE,
  auto_drop BOOLEAN                       DEFAULT TRUE,
  comments TEXT                           DEFAULT NULL,
  job_style TEXT                          DEFAULT 'REGULAR',
  credential_name TEXT                    DEFAULT NULL,
  destination_name TEXT                   DEFAULT NULL
  )
  -- 引用创建好的程序，内联调度的定时任务
  DBE_SCHEDULER.CREATE_JOB(
  job_name text,
  program_name TEXT,
  start_date TIMESTAMP WITH TIME ZONE     DEFAULT NULL,
  repeat_interval TEXT                    DEFAULT NULL,
  end_date TIMESTAMP WITH TIME ZONE       DEFAULT NULL,
  job_class TEXT            DEFAULT 'DEFAULT_JOB_CLASS',
  enabled BOOLEAN                         DEFAULT FALSE,
  auto_drop BOOLEAN                       DEFAULT TRUE,
  comments TEXT                           DEFAULT NULL,
  job_style TEXT                          DEFAULT 'REGULAR',
  credential_name TEXT                    DEFAULT NULL,
  destination_name TEXT                   DEFAULT NULL
  )
  -- 引用创建好的调度，内联程序的定时任务
  DBE_SCHEDULER.CREATE_JOB(
  job_name TEXT,
  schedule_name TEXT,
  job_type TEXT,
  job_action TEXT,
  number_of_arguments INTEGER             DEFAULT 0,
  job_class TEXT             DEFAULT 'DEFAULT_JOB_CLASS',
  enabled BOOLEAN                         DEFAULT FALSE,
  auto_drop BOOLEAN                       DEFAULT TRUE,
  comments TEXT                           DEFAULT NULL,
  credential_name TEXT                    DEFAULT NULL,
  destination_name TEXT                   DEFAULT NULL
  )
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  利用DBE_SCHEDULER创建的定时任务不会与DBE_TASK中的定时任务相冲突。
  DBE_SCHEDULER创建的定时任务会生成对应的job_id，但是在使用过程中这个id并没有实际意义。
  对于create类型接口，不做入参类型合法性校验，创建成功不代表会执行成功，通过系统表pg_job查询当前任务的执行状态。
  表2DBE_SCHEDULER.CREATE_JOB接口参数说明 
  | 参数                  | 类型                       | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  |:---|:---|:---|:---|:---|
  | job_name            | TEXT                     | IN    | 否      | 定时任务名称。非ilm特性调度场景下，无法创建前缀为"ilmadowind$_"和"ilmjob$_"的job。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | job_type            | TEXT                     | IN    | 否      | 定时任务内联程序类型，可用类型为： - 'PLSQL_BLOCK'：匿名存储过程快。  - 'STORED_PROCEDURE'：保存的存储过程。  - 'EXTERNAL_SCRIPT'：外部脚本   |
  | job_action          | TEXT                     | IN    | 否      | 定时任务内联程序执行内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | number_of_arguments | INTEGER                  | IN    | 否      | 定时任务内联程序参数个数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | program_name        | TEXT                     | IN    | 否      | 定时任务引用程序名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | start_date          | TIMESTAMP WITH TIME ZONE | IN    | 是      | 定时任务内联调度起始时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | repeat_interval     | TEXT                     | IN    | 是      | 定时任务内联调度任务周期。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | end_date            | TIMESTAMP WITH TIME ZONE | IN    | 是      | 定时任务内联调度失效时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | schedule_name       | TEXT                     | IN    | 否      | 定时任务引用调度名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | job_class           | TEXT                     | IN    | 否      | 定时任务类名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  | enabled             | BOOLEAN                  | IN    | 否      | 定时任务启用状态。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | auto_drop           | BOOLEAN                  | IN    | 否      | 定时任务自动删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | comments            | TEXT                     | IN    | 是      | 备注                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | job_style           | TEXT                     | IN    | 否      | 定时任务行为模式，仅支持'REGULAR'。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | credential_name     | TEXT                     | IN    | 是      | 定时任务证书名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | destination_name    | TEXT                     | IN    | 是      | 定时任务目标名，当前只支持值'CCN'（不区分大小写），指定destination_name为CCN的任务只在central coordinator执行。否则按原有逻辑处理。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test');
   create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', NULL, 'sysdate', NULL, 'test');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_job(job_name=>'job1', program_name=>'program1', schedule_name=>'schedule1');
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1');
   drop_schedule 
  ---------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  创建'EXTERNAL_SCRIPT'类型的定时任务需要管理员赋予相关的权限和证书，且需要数据库启动用户对该外部脚本有读取权限才可以正常生效。
  
 
- DBE_SCHEDULER.DROP_JOB
  删除定时任务。仅任务被同步时同步操作。
  DBE_SCHEDULER.DROP_JOB函数原型为：
  ```
  DBE_SCHEDULER.drop_job(
  job_name text,
  force boolean                           default false,
  defer boolean                           default false,
  commit_semantics text      default 'STOP_ON_FIRST_ERROR'
  )
  ```
  
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  DBE_SCHEDULER.DROP_JOB可以指定一个或多个任务，也可以指定任务类进行定时任务删除。
  表3DBE_SCHEDULER.DROP_JOB接口参数说明 
  | 参数               | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  |:---|:---|:---|:---|:---|
  | job_name         | TEXT    | IN    | 否      | 定时任务或定时任务类名称，可以指定一个或多个，当指定多个定时任务时需要利用逗号隔开。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | force            | BOOLEAN | IN    | 否      | 删除定时任务行为标记位： - TRUE：尝试先停止当前定时任务，再进行删除。  - FALSE：如果定时任务正在运行会删除失败。                                                                                                                                                                                                            |
  | defer            | BOOLEAN | IN    | 否      | 删除定时任务行为标记位： - TRUE：允许定时任务完成后再进行删除。  - FALSE：不允许定时任务继续执行，尝试进行删除。                                                                                                                                                                                                            |
  | commit_semantics | TEXT    | IN    | 否      | 提交规则： - 'STOP_ON_FIRST_ERROR'：在第一个报错之前的删除操作会提交。  - 'TRANSACTIONAL'：事务级提交，报错前的删除操作会回滚。  - 'ABSORB_ERRORS'：尝试越过报错，将成功的删除操作提交。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test');
   create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', NULL, 'sysdate', NULL, 'test');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_job(job_name=>'job1', program_name=>'program1', schedule_name=>'schedule1');
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1');
   drop_schedule 
  ---------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  commit_semantic中的'TRANSACTIONAL'选项必须在force为false的情况下才会生效。
  

- DBE_SCHEDULER.DROP_SINGLE_JOB
  删除一个定时任务。仅任务被同步时同步操作。
  DBE_SCHEDULER.DROP_SINGLE_JOB函数原型为：
  ```
  DBE_SCHEDULER.drop_single_job(
  job_name text,
  force boolean                           default false,
  defer boolean                           default false
  )
  ```
  表4DBE_SCHEDULER.DROP_SINGLE_JOB接口参数说明 
  | 参数       | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  |:---|:---|:---|:---|:---|
  | job_name | TEXT    | IN    | 否      | 定时任务或定时任务类名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | force    | BOOLEAN | IN    | 否      | 删除定时任务行为标记位： - TRUE：尝试先停止当前定时任务，再进行删除。  - FALSE：如果定时任务正在运行会删除失败。         |
  | defer    | BOOLEAN | IN    | 否      | 删除定时任务行为标记位： - TRUE：允许定时任务完成后再进行删除。  - FALSE：不允许定时任务继续执行，尝试进行删除。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 0, false, 'test');
   create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_job('job1', 'program1', '2021-07-20', 'interval ''3 minute''', '2121-07-20', 'DEFAULT_JOB_CLASS', false, false,'test', 'style', NULL, NULL);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_single_job('job1', false, false);
   drop_single_job 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  

- DBE_SCHEDULER.SET_ATTRIBUTE
  修改定时任务属性。仅任务被同步时同步操作。
  DBE_SCHEDULER.SET_ATTRIBUTE函数4种原型为：
  ```
  DBE_SCHEDULER.set_attribute(
  name                    text,
  attribute               text,
  value                   boolean
  )
  DBE_SCHEDULER.set_attribute(
  name                    text,
  attribute               text,
  value                   text
  )
  DBE_SCHEDULER.set_attribute(
  name                    text,
  attribute               text,
  value                   timestamp
  )
  DBE_SCHEDULER.set_attribute(
  name                    text,
  attribute               text,
  value                   timestamp with time zone
  )
  DBE_SCHEDULER.set_attribute(
  name text,
  attribute text,
  value text,
  value2 text                             default NULL
  )
  ```
  
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  name在这里可以指定任何DBE_SCHEDULER内部的对象。
  表5DBE_SCHEDULER.SET_ATTRIBUTE接口参数说明 
  | 参数        | 类型                                                          | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  |:---|:---|:---|:---|:---|
  | name      | TEXT                                                        | IN    | 否      | 对象名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | attribute | TEXT                                                        | IN    | 否      | 属性名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | value     |  BOOLEAN/DATE/TIMESTAMP/TIMESTAMP WITH TIME ZONE/TEXT | IN    | 否      | 属性值，可选属性如下： - 定时任务相关：job_type，job_action，number_of_arguments，start_date，repeat_interval，end_date，ob_class，enabled，auto_drop，comments，credential_name，destination_name，program_name，schedule_name，job_style。  - 程序相关：program_action，program_type，number_of_arguments，comments。  - 调度相关：start_date，repeat_interval，end_date，comments。   |
  | value2    | TEXT                                                        | IN    | 是      | 额外属性值。保留参数位，目前尚不支持拥有额外属性值的目标属性。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test');
   create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.set_attribute('program1', 'number_of_arguments', 0);
   set_attribute 
  ---------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.set_attribute('program1', 'program_type', 'STORED_PROCEDURE');
   set_attribute 
  ---------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  不要使用DBE_SCHEDULER.SET_ATTRIBUTE来将参数置空。
  对象名不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。
  内联对象不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。
  

- DBE_SCHEDULER.RUN_JOB
  运行定时任务。
  DBE_SCHEDULER.RUN_JOB函数原型为：
  ```
  DBE_SCHEDULER.run_job(
  job_name text,
  use_current_session boolean             default true
  )
  ```
  
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  DBE_SCHEDULER.RUN_JOB主要用于立即运行定时作业，独立于定时任务本身的调度，甚至可以同时运行。
  表6DBE_SCHEDULER.RUN_JOB接口参数说明 
  | 参数                  | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  |:---|:---|:---|:---|:---|
  | job_name            | TEXT    | IN    | 否      | 定时任务名称，可以指定一个或多个，当指定多个定时任务时需要利用逗号隔开。                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | use_current_session | BOOLEAN | IN    | 否      | 运行定时任务标志位： - TRUE：使用当前会话运行，主要用于查看定时任务是否可以正常运行。  - FALSE：后台拉起定时任务，运行结果会打印到日志中。   |
     
  示例：
  ```
  gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.run_job('job1', false);
   run_job 
  ---------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  use_current_session目前只作用于job_type为'EXTERNAL_SCRIPT'的定时任务上。
  

- DBE_SCHEDULER.RUN_BACKEND_JOB
  后台运行定时任务。
  DBE_SCHEDULER.RUN_BACKEND_JOB函数原型为：
  ```
  DBE_SCHEDULER.run_backend_job(
  job_name text
  )
  ```
  表7DBE_SCHEDULER.RUN_BACKEND_JOB接口参数说明 
  | 参数       | 类型   | 入参/出参 | 是否可以为空 | 描述      |
  |:---|:---|:---|:---|:---|
  | job_name | text | IN    | 否      | 定时任务名称。 |
     
  示例：
  ```
  gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.run_backend_job('job1');
   run_backend_job 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  ```
  

- DBE_SCHEDULER.RUN_FOREGROUND_JOB
  当前会话运行定时任务。
  仅支持运行external类型任务。
  返回值：text。
  DBE_SCHEDULER.RUN_FOREGROUND_JOB函数原型为：
  ```
  DBE_SCHEDULER.run_foreground_job(
  job_name text
  )return text
  ```
  表8DBE_SCHEDULER.RUN_FOREGROUND_JOB接口参数说明 
  | 参数       | 类型   | 入参/出参 | 是否可以为空 | 描述      |
  |:---|:---|:---|:---|:---|
  | job_name | TEXT | IN    | 否      | 定时任务名称。 |
     
  示例：
  ```
  gaussdb=# create user test1 identified by '*********';
  NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
  CREATE ROLE
  gaussdb=# select DBE_SCHEDULER.create_credential('cre_1', 'test1', '*********');
   create_credential 
  -------------------
  (1 row)
  gaussdb=# select DBE_SCHEDULER.create_job(job_name=>'job1', job_type=>'EXTERNAL_SCRIPT', job_action=>'/usr/bin/pwd', enabled=>true, auto_drop=>false, credential_name => 'cre_1');
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.run_foreground_job('job1');
    run_foreground_job
  ---------------------------------
   Host key verification failed.\r+
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_credential('cre_1', false);
   drop_credential 
  -----------------
  (1 row)
  gaussdb=# drop user test1;
  DROP ROLE
  ```
  

- DBE_SCHEDULER.STOP_JOB
  终止定时任务。
  DBE_SCHEDULER.STOP_JOB函数原型为：
  ```
  DBE_SCHEDULER.stop_job(
  job_name text,
  force boolean                           default false,
  commit_semantics text                   default 'STOP_ON_FIRST_ERROR'
  )
  ```
  表9DBE_SCHEDULER.STOP_JOB接口参数说明 
  | 参数               | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  |:---|:---|:---|:---|:---|
  | job_name         | TEXT    | IN    | 否      | 定时任务或定时任务类名称，可以指定一个或多个，当指定多个定时任务时需要利用逗号隔开。                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | force            | BOOLEAN | IN    | 否      | 删除定时任务行为标记位： - TRUE：调度器会发送终止信号立即结束任务线程。  - FALSE：调度器会尝试利用打断信号终止定时任务线程。                            |
  | commit_semantics | TEXT    | IN    | 否      | 提交规则： - 'STOP_ON_FIRST_ERROR'：在第一个报错之前的打断操作会提交。  - 'ABSORB_ERRORS'：尝试越过报错，将成功的打断操作提交。   |
     
  示例：
  ```
  gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.stop_job('job1', true, 'STOP_ON_FIRST_ERROR');
   stop_job 
  ----------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  ```
  

- DBE_SCHEDULER.STOP_SINGLE_JOB
  终止单个定时任务。
  DBE_SCHEDULER.STOP_SINGLE_JOB函数原型为：
  ```
  DBE_SCHEDULER.stop_single_job(
  job_name text,
  force boolean                           default false
  )
  ```
  表10DBE_SCHEDULER.STOP_SINGLE_JOB接口参数说明 
  | 参数       | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  |:---|:---|:---|:---|:---|
  | job_name | TEXT    | IN    | 否      | 定时任务或定时任务类名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | force    | BOOLEAN | IN    | 否      | 删除定时任务行为标记位： - TRUE：调度器会发送终止信号立即结束任务线程。  - FALSE：调度器会尝试利用打断信号终止定时任务线程。   |
     
  示例：
  ```
  gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.stop_single_job('job1', true);
   stop_single_job 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  ```
  

- DBE_SCHEDULER.GENERATE_JOB_NAME
  生成定时任务名称。
  DBE_SCHEDULER.GENERATE_JOB_NAME函数原型为：
  ```
  DBE_SCHEDULER.generate_job_name(
  prefix text                             default 'JOB$_'
  )return text
  ```
  表11DBE_SCHEDULER.GENERATE_JOB_NAME接口参数说明 
  | 参数     | 类型   | 入参/出参 | 是否可以为空 | 描述                                                                                                                                      |
  |:---|:---|:---|:---|:---|
  | prefix | TEXT | IN    | 否      | 生成名称的前缀，默认为'JOB$_'，反复执行生成的定时任务名为： job$_1, job$_2, job$_3 ... |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.generate_job_name();
   generate_job_name 
  -------------------
   JOB$_1
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.generate_job_name();
   generate_job_name 
  -------------------
   JOB$_2
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.generate_job_name('job');
   generate_job_name 
  -------------------
   job3
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.generate_job_name('job');
   generate_job_name 
  -------------------
   job4
  (1 row)
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  首次执行DBE_SCHEDULER.GENERATE_JOB_NAME会在public下创建一个临时序列用于保存当前名称的序号。由于普通用户没有在public下create权限，因此如果普通用户为当前db下第一次调用该函数，会失败，需要授权该普通用户在public下的create权限，或者使用有该权限的用户调用该接口以创建临时序列。
  

- DBE_SCHEDULER.CREATE_PROGRAM
  创建程序，同步到所有CN节点 。
  DBE_SCHEDULER.CREATE_PROGRAM函数原型为：
  ```
  DBE_SCHEDULER.create_program(
  program_name text,
  program_type text,
  program_action text,
  number_of_arguments integer             default 0,
  enabled boolean                         default false,
  comments text                           default NULL
  )
  ```
  表12DBE_SCHEDULER.CREATE_PROGRAM接口参数说明 
  | 参数                  | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  |:---|:---|:---|:---|:---|
  | program_name        | TEXT    | IN    | 否      | 程序名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | program_type        | TEXT    | IN    | 否      | 程序类型，可用类型为： - 'PLSQL_BLOCK'：匿名存储过程快。  - 'STORED_PROCEDURE'：保存的存储过程。  - 'EXTERNAL_SCRIPT'：外部脚本。   |
  | program_action      | TEXT    | IN    | 否      | 程序操作。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | number_of_arguments | INTEGER | IN    | 否      | 程序采用的参数数量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | enabled             | BOOLEAN | IN    | 否      | 程序启用状态。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | comments            | TEXT    | IN    | 是      | 备注                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test');
   create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  

- DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT
  定义程序参数。仅程序被同步时同步操作。
  修正带默认值default_value字段的接口默认转换成小写行为，对字符大小写做出区分。
  DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT函数原型为：
  ```
  DBE_SCHEDULER.define_program_argument(
  program_name text,
  argument_position integer,
  argument_name text                      default NULL,
  argument_type text,
  out_argument boolean                    default false
  )
  -- 带有默认值 --
  DBE_SCHEDULER.define_program_argument(
  program_name text,
  argument_position integer,
  argument_name text                      default NULL,
  argument_type text,
  default_value text,
  out_argument boolean                    default false
  )
  ```
  表13DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT接口参数说明 
  | 参数                | 类型      | 入参/出参 | 是否可以为空 | 描述    |
  |:---|:---|:---|:---|:---|
  | program_name      | TEXT    | IN    | 否      | 程序名称。 |
  | argument_position | INTEGER | IN    | 否      | 参数位置。 |
  | argument_name     | TEXT    | IN    | 否      | 参数名称。 |
  | argument_type     | TEXT    | IN    | 否      | 参数类型。 |
  | default_value     | TEXT    | IN    | 否      | 默认值。  |
  | out_argument      | BOOLEAN | IN    | 否      | 预留参数。 |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 2, false, 'test');
  create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.define_program_argument('program1', 1, 'pa1', 'type1', false);
   define_program_argument 
  -------------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.define_program_argument('program1', 1, 'pa1', 'type1', 'value1', false);
   define_program_argument 
  -------------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  
- DBE_SCHEDULER.DROP_PROGRAM
  删除程序。仅程序被同步时同步操作。
  DBE_SCHEDULER.DROP_PROGRAM函数原型为：
  ```
  DBE_SCHEDULER.drop_program(
  program_name text,
  force boolean                           default false
  )
  ```
  表14DBE_SCHEDULER.DROP_PROGRAM接口参数说明 
  | 参数           | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|:---|:---|:---|
  | program_name | TEXT    | IN    | 否      | 程序名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | force        | BOOLEAN | IN    | 否      | 删除程序行为标记位： - TRUE：在删除程序之前，将禁用应用该程序的所有作业。  - FALSE：该程序不能被任何作业引用，否则会发送错误。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 2, false, 'test');
  create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  

- DBE_SCHEDULER.DROP_SINGLE_PROGRAM
  删除单个程序。仅程序被同步时同步操作。
  DBE_SCHEDULER.DROP_SINGLE_PROGRAM函数原型为：
  ```
  DBE_SCHEDULER.drop_single_program(
  program_name text,
  force boolean                           default false
  )
  ```
  表15DBE_SCHEDULER.DROP_SINGLE_PROGRAM接口参数说明 
  | 参数           | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  |:---|:---|:---|:---|:---|
  | program_name | TEXT    | IN    | 否      | 程序名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | force        | BOOLEAN | IN    | 否      | 删除程序行为标记位： - TRUE：在删除程序之前，将禁用应用该程序的所有作业。  - FALSE：该程序不能被任何作业引用，否则会发送错误。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 2, false, 'test');
  create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_single_program('program1', false);
   drop_single_program 
  ---------------------
  (1 row)
  ```
  
- DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE
  设置定时任务参数值。argument_value字段支持赋空入参。仅任务被同步时同步操作。
  DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE函数原型为：
  ```
  DBE_SCHEDULER.set_job_argument_value(
  job_name text,
  argument_position integer,
  argument_value text
  )
  DBE_SCHEDULER.set_job_argument_value(
  job_name text,
  argument_name text,
  argument_value text
  )
  ```
  表16DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE接口参数说明 
  | 参数                | 类型      | 入参/出参 | 是否可以为空 | 描述      |
  |:---|:---|:---|:---|:---|
  | job_name          | TEXT    | IN    | 否      | 定时任务名称。 |
  | argument_position | INTEGER | IN    | 否      | 参数位置。   |
  | argument_name     | TEXT    | IN    | 是      | 参数名称。   |
  | argument_value    | TEXT    | IN    | 是      | 参数值。    |
     
  示例：
  ```
  gaussdb=# CALL dbe_scheduler.create_job('job1','EXTERNAL_SCRIPT','begin insert into test1 values(12); end;',2,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.set_job_argument_value('job1', 1, 'value1');
   set_job_argument_value 
  ------------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  ```
  

- DBE_SCHEDULER.CREATE_SCHEDULE
  创建调度。同步到所有CN节点。
  DBE_SCHEDULER.CREATE_SCHEDULE函数原型为：
  ```
  DBE_SCHEDULER.create_schedule(
  schedule_name text,
  start_date timestamp with time zone     default NULL,
  repeat_interval text,
  end_date timestamp with time zone       default NULL,
  comments text                           default NULL
  )
  ```
  表17DBE_SCHEDULER.CREATE_SCHEDULE接口参数说明 
  | 参数              | 类型                       | 入参/出参 | 是否可以为空 | 描述      |
  |:---|:---|:---|:---|:---|
  | schedule_name   | TEXT                     | IN    | 否      | 调度名称。   |
  | start_date      | TIMESTAMP WITH TIME ZONE | IN    | 是      | 调度开始时间。 |
  | repeat_interval | TEXT                     | IN    | 否      | 调度重复频率。 |
  | end_date        | TIMESTAMP WITH TIME ZONE | IN    | 是      | 调度结束时间。 |
  | comments        | TEXT                     | IN    | 是      | 备注      |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', sysdate, 'sysdate + 3 / (24 * 60 * 60)', null, 'test1');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule2', sysdate, 'FREQ=DAILY; BYHOUR=6;', null, 'test1');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule3', sysdate, 'FREQ=DAILY; BYHOUR=6;');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1');
   drop_single_schedule 
  ----------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule2', false);
   drop_single_schedule 
  ----------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule3', true);
   drop_single_schedule 
  ----------------------
  (1 row)
  ```
  

- DBE_SCHEDULER.DROP_SCHEDULE
  删除调度。仅调度被同步时同步操作。
  DBE_SCHEDULER.DROP_SCHEDULE函数原型为：
  ```
  DBE_SCHEDULER.drop_schedule(
  schedule_name text,
  force boolean                           default false
  )
  ```
  表18DBE_SCHEDULER.DROP_SCHEDULE接口参数说明 
  | 参数            | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  |:---|:---|:---|:---|:---|
  | schedule_name | TEXT    | IN    | 否      | 调度名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | force         | BOOLEAN | IN    | 否      | 删除调度行为标记位： - true：在删除调度之前，将禁用使用此调度的任何作业或窗口。  - false：调度不能被任何作业或窗口引用，否则会发生错误。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', sysdate, 'sysdate + 3 / (24 * 60 * 60)', null, 'test1');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule2', sysdate, 'FREQ=DAILY; BYHOUR=6;', null, 'test1');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule3', sysdate, 'FREQ=DAILY; BYHOUR=6;');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1');
   drop_single_schedule 
  ----------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule2', false);
   drop_single_schedule 
  ----------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule3', true);
   drop_single_schedule 
  ----------------------
  (1 row)
  ```
  

- DBE_SCHEDULER.DROP_SINGLE_SCHEDULE
  删除单个调度。仅调度被同步时同步操作。
  DBE_SCHEDULER.DROP_SINGLE_SCHEDULE函数原型为：
  ```
  DBE_SCHEDULER.drop_single_schedule(
  schedule_name text,
  force boolean                           default false
  )
  ```
  表19DBE_SCHEDULER.DROP_SINGLE_SCHEDULE接口参数说明 
  | 参数            | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|:---|:---|:---|
  | schedule_name | TEXT    | IN    | 否      | 调度名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | force         | BOOLEAN | IN    | 否      | 删除调度行为标记位： - TRUE：在删除调度之前，将禁用使用此调度的任何作业或窗口。  - FALSE：调度不能被任何作业或窗口引用，否则会发生错误。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', sysdate, 'sysdate + 3 / (24 * 60 * 60)', null, 'test1');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule2', sysdate, 'FREQ=DAILY; BYHOUR=6;', null, 'test1');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule3', sysdate, 'FREQ=DAILY; BYHOUR=6;');
   create_schedule 
  -----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_single_schedule('schedule1');
   drop_single_schedule 
  ----------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_single_schedule('schedule2', false);
   drop_single_schedule 
  ----------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_single_schedule('schedule3', true);
   drop_single_schedule 
  ----------------------
  (1 row)
  ```
  

- DBE_SCHEDULER.CREATE_JOB_CLASS
  创建定时任务类。同步到所有CN节点。
  DBE_SCHEDULER.CREATE_JOB_CLASS函数原型为：
  ```
  DBE_SCHEDULER.create_job_class(
  job_class_name text,
  resource_consumer_group text            default NULL,
  service text                            default NULL,
  logging_level integer                   default 0,
  log_history integer                     default NULL,
  comments text                           default NULL
  )
  ```
  表20DBE_SCHEDULER.CREATE_JOB_CLASS接口参数说明 
  | 参数                      | 类型      | 入参/出参 | 是否可以为空 | 描述             |
  |:---|:---|:---|:---|:---|
  | job_class_name          | TEXT    | IN    | 否      | 定时任务类名称。       |
  | resource_consumer_group | TEXT    | IN    | 是      | 定时任务类内联资源消费组。  |
  | service                 | TEXT    | IN    | 是      | 定时任务类内联数据库服务。  |
  | logging_level           | INTEGER | IN    | 否      | 定时任务类记录信息个数。   |
  | log_history             | INTEGER | IN    | 是      | 定时任务类记录信息保留天数。 |
  | comments                | TEXT    | IN    | 是      | 备注             |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_job_class(job_class_name => 'jc1', resource_consumer_group => '123');
   create_job_class 
  ------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job_class('jc1', false);
   drop_job_class 
  ----------------
  (1 row)
  ```
  

- DBE_SCHEDULER.DROP_JOB_CLASS
  删除定时任务类。仅定时任务类被同步时同步操作。
  DBE_SCHEDULER.DROP_JOB_CLASS函数原型为：
  ```
  DBE_SCHEDULER.drop_job_class(
  job_class_name text,
  force boolean                           default false
  )
  ```
  表21DBE_SCHEDULER.DROP_JOB_CLASS接口参数说明 
  | 参数             | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  |:---|:---|:---|:---|:---|
  | job_class_name | TEXT    | IN    | 否      | 定时任务类名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | force          | BOOLEAN | IN    | 否      | 删除定时任务类行为标记位： - TRUE：该类的作业将被禁用，并且其他类将设置为默认类，只有在成功的情况下，才会删除该类。  - FALSE：被删除的类不得被任何作业引用，否则会发生错误。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_job_class(job_class_name => 'jc1', resource_consumer_group => '123');
   create_job_class 
  ------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job_class('jc1', false);
   drop_job_class 
  ----------------
  (1 row)
  ```
  

- DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS
  删除单个定时任务类。仅定时任务类被同步时同步操作。
  DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS函数原型为：
  ```
  DBE_SCHEDULER.drop_single_job_class(
  job_class_name text,
  force boolean                           default false
  )
  ```
  表22DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS接口参数说明 
  | 参数             | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  |:---|:---|:---|:---|:---|
  | job_class_name | TEXT    | IN    | 否      | 定时任务类名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | force          | BOOLEAN | IN    | 否      | 删除定时任务类行为标记位： - TRUE：该类的作业将被禁用，并且其他类将设置为默认类，只有在成功的情况下，才会删除该类。  - FALSE：被删除的类不得被任何作业引用，否则会发生错误。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_job_class(job_class_name => 'jc1', resource_consumer_group => '123');
   create_job_class 
  ------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_single_job_class('jc1', false);
   drop_single_job_class 
  -----------------------
  (1 row)
  ```
  

- DBE_SCHEDULER.GRANT_USER_AUTHORIZATION
  为数据库用户提供定时任务权限。调用该函数的用户需要具有SYSADMIN权限。同步到所有CN节点。
  DBE_SCHEDULER.GRANT_USER_AUTHORIZATION函数原型为：
  ```
  DBE_SCHEDULER.grant_user_authorization(
  username                text,
  privilege               text
  )
  ```
  表23DBE_SCHEDULER.GRANT_USER_AUTHORIZATION接口参数说明 
  | 参数        | 类型   | 入参/出参 | 是否可以为空 | 描述       |
  |:---|:---|:---|:---|:---|
  | username  | TEXT | IN    | 否      | 数据库用户名称。 |
  | privilege | TEXT | IN    | 否      | 定时任务权限。  |
     
  示例：
  ```
  gaussdb=# create user user1 password '1*s*****';
  NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
  CREATE ROLE
  gaussdb=# CALL DBE_SCHEDULER.grant_user_authorization('user1', 'create job');
   grant_user_authorization 
  --------------------------
  (1 row)
  gaussdb=# drop user user1;
  DROP ROLE
  ```
  

- DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION
  撤销数据库用户的定时任务权限。调用该函数的用户需要具有SYSADMIN权限。仅赋权同步时同步操作。
  DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION函数原型为：
  ```
  DBE_SCHEDULER.revoke_user_authorization(
  username                text,
  privilege               text
  )
  ```
  表24DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION接口参数说明 
  | 参数        | 类型   | 入参/出参 | 是否可以为空 | 描述       |
  |:---|:---|:---|:---|:---|
  | username  | TEXT | IN    | 否      | 数据库用户名称。 |
  | privilege | TEXT | IN    | 否      | 定时任务权限。  |
     
  示例：
  ```
  gaussdb=# create user user1 password '1*s*****';
  NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
  CREATE ROLE
  gaussdb=# CALL DBE_SCHEDULER.grant_user_authorization('user1', 'create job');
   grant_user_authorization 
  --------------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.revoke_user_authorization('user1', 'create job');
   revoke_user_authorization 
  ---------------------------
  (1 row)
  gaussdb=# drop user user1;
  DROP ROLE
  ```
  

- DBE_SCHEDULER.CREATE_CREDENTIAL
  创建授权证书。调用该函数的用户需要具有SYSADMIN权限。同步到所有CN节点。
  DBE_SCHEDULER.CREATE_CREDENTIAL函数原型为：
  ```
  DBE_SCHEDULER.create_credential(
  credential_name         text,
  username                text,
  password                text            default NULL,
  database_role           text            default NULL,
  windows_domain          text            default NULL,
  comments                text            default NULL
  )
  ```
  表25DBE_SCHEDULER.CREATE_CREDENTIAL接口参数说明 
  | 参数              | 类型   | 入参/出参 | 是否可以为空 | 描述            |
  |:---|:---|:---|:---|:---|
  | credential_name | TEXT | IN    | 否      | 授权证书名称。       |
  | username        | TEXT | IN    | 否      | 数据库用户名称。      |
  | password        | TEXT | IN    | 是      | 用户密码。         |
  | database_role   | TEXT | IN    | 是      | 数据库系统权限。      |
  | windows_domain  | TEXT | IN    | 是      | Windows用户所属域。 |
  | comments        | TEXT | IN    | 是      | 备注            |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_credential('cre_1', 'user1', '');
   create_credential 
  -------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_credential('cre_1', false);
   drop_credential 
  -----------------
  (1 row)
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  DBE_SCHEDULER.CREATE_CREDENTIAL的password字段请传NULL或者'\*\*\*\*\*\*',该参数仅做兼容性，不代表实际含义。禁止使用安装用户对应的os用户名创建证书。
  

- DBE_SCHEDULER.DROP_CREDENTIAL
  销毁授权证书。调用该函数的用户需要具有SYSADMIN权限。仅证书被同步时同步操作。
  DBE_SCHEDULER.DROP_CREDENTIAL函数原型为：
  ```
  DBE_SCHEDULER.drop_credential(
  credential_name         text,
  force boolean default false
  )
  ```
  表26DBE_SCHEDULER.DROP_CREDENTIAL接口参数说明 
  | 参数              | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  |:---|:---|:---|:---|:---|
  | credential_name | TEXT    | IN    | 否      | 授权证书名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | force           | BOOLEAN | IN    | 否      | 删除授权证书行为标记位： - TRUE：无论是否有作业引用该证书，都会被删除。  - FALSE：任何作业都无法引用该证书，否则会发生错误。   |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.create_credential('cre_1', 'user1', '');
   create_credential 
  -------------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_credential('cre_1', false);
   drop_credential 
  -----------------
  (1 row)
  ```
  

- DBE_SCHEDULER.ENABLE
  启用对象。同步到所有CN节点。
  DBE_SCHEDULER.ENABLE函数原型为：
  ```
  DBE_SCHEDULER.enable(
  name text,
  commit_semantics text                   default 'STOP_ON_FIRST_ERROR'
  )
  ```
  表27DBE_SCHEDULER.ENABLE接口参数说明 
  | 参数               | 类型   | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  |:---|:---|:---|:---|:---|
  | name             | TEXT | IN    | 否      | 对象名称，可以指定一个或多个，当指定多个程序时需利用逗号隔开。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | commit_semantics | TEXT | IN    | 否      | 提交规则。支持以下类型： - 'STOP_ON_FIRST_ERROR'：在第一个报错之前的启用操作会提交。  - 'TRANSACTIONAL'：事务级提交，报错前的启用操作会回滚。  - 'ABSORB_ERRORS'：尝试越过报错，将成功的启用操作提交。   |
     
  示例：
  ```
  gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'stored_procedure', 'insert into tb_job_test(key) values(null);', 0, false, '');
   create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.enable('job1');
   enable 
  --------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.enable('program1', 'STOP_ON_FIRST_ERROR');
   enable 
  --------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  

- DBE_SCHEDULER.ENABLE_SINGLE
  启用单个对象。同步到所有CN节点。
  DBE_SCHEDULER.ENABLE_SINGLE函数原型为：
  ```
  DBE_SCHEDULER.enable_single(
  name text
  )
  ```
  表28DBE_SCHEDULER.ENABLE_SINGLE接口参数说明 
  | 参数   | 类型   | 入参/出参 | 是否可以为空 | 描述    |
  |:---|:---|:---|:---|:---|
  | name | TEXT | IN    | 否      | 对象名称。 |
     
  示例：
  ```
  gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.enable_single('job1');
   enable_single 
  ---------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  ```
  

- DBE_SCHEDULER.DISABLE
  禁用多个对象，name为逗号分隔的字符串，每个逗号分隔的字符串为一个对象。仅启用操作同步时同步操作。
  DBE_SCHEDULER.DISABLE函数原型为：
  ```
  DBE_SCHEDULER.disable(
  name text,
  force boolean                           default false,
  commit_semantics text                   default 'STOP_ON_FIRST_ERROR'
  )
  ```
  表29DBE_SCHEDULER.DISABLE接口参数说明 
  | 参数               | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  |:---|:---|:---|:---|:---|
  | name             | TEXT    | IN    | 否      | 对象名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | force            | BOOLEAN | IN    | 否      | 禁用对象行为标记位： - TRUE：无论是否有其他对象依赖于该对象，也会被禁用。  - FALSE：任何对象都无法依赖于该对象，否则会发生错误。                                                                                                                                                                                                             |
  | commit_semantics | TEXT    | IN    | 否      | 提交规则。支持以下类型： - 'STOP_ON_FIRST_ERROR'：在第一个报错之前的禁用操作会提交。  - 'TRANSACTIONAL'：事务级提交，报错前的禁用操作会回滚。  - 'ABSORB_ERRORS'：尝试越过报错，将成功的禁用操作提交。   |
     
  示例：
  ```
  gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'stored_procedure', 'insert into tb_job_test(key) values(null);', 0, false, '');
   create_program 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.disable('job1');
   disable 
  ---------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.disable('program1', false, 'STOP_ON_FIRST_ERROR');
   disable 
  ---------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false);
   drop_program 
  --------------
  (1 row)
  ```
  

- DBE_SCHEDULER.DISABLE_SINGLE
  禁用单个对象。仅启用操作同步时同步操作。
  DBE_SCHEDULER.DISABLE_SINGLE函数原型为：
  ```
  DBE_SCHEDULER.disable_single(
  name text,
  force boolean                           default false
  )
  ```
  表30DBE_SCHEDULER.DISABLE_SINGLE接口参数说明 
  | 参数    | 类型      | 入参/出参 | 是否可以为空 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|:---|:---|:---|
  | name  | TEXT    | IN    | 否      | 对象名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | force | BOOLEAN | IN    | 否      | 禁用对象行为标记位： - TRUE：无论是否有其他对象依赖于该对象，也会被禁用。  - FALSE：任何对象都无法依赖于该对象，否则会发生错误。   |
     
  示例：
  ```
  gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null);
   create_job 
  ------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.disable_single('job1', false);
   disable_single 
  ----------------
  (1 row)
  gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR');
   drop_job 
  ----------
  (1 row)
  ```
  

- DBE_SCHEDULER.EVAL_CALENDAR_STRING
  分析调度任务周期。
  返回值类型：timestamp with time zone
  DBE_SCHEDULER.EVAL_CALENDAR_STRING函数原型为：
  ```
  DBE_SCHEDULER.evaluate_calendar_string(
  IN calendar_string text,
  IN start_date timestamp with time zone,
  IN return_date_after timestamp with time zone
  )return timestamp with time zone
  ```
  表31DBE_SCHEDULER.EVAL_CALENDAR_STRING接口参数说明 
  | 参数                | 类型                       | 入参/出参 | 是否可以为空 | 描述         |
  |:---|:---|:---|:---|:---|
  | calendar_string   | TEXT                     | IN    | 否      | 定时任务日期字符串。 |
  | start_date        | TIMESTAMP WITH TIME ZONE | IN    | 否      | 定时任务开始时间。  |
  | return_date_after | TIMESTAMP WITH TIME ZONE | IN    | 否      | 定时任务返回日期。  |
     
  示例：
  ```
  gaussdb=# CALL DBE_SCHEDULER.eval_calendar_string('FREQ=DAILY; BYHOUR=6;', sysdate, sysdate);
    eval_calendar_string  
  ------------------------
   2023-09-15 06:47:24+08
  (1 row)
  ```
  

- DBE_SCHEDULER.EVALUATE_CALENDAR_STRING
  分析调度任务周期。
  返回值类型：timestamp with time zone
  DBE_SCHEDULER.EVALUATE_CALENDAR_STRING函数原型为：
  ```
  DBE_SCHEDULER.evaluate_calendar_string(
  IN calendar_string text,
  IN start_date timestamp with time zone,
  IN return_date_after timestamp with time zone,
  OUT next_run_date timestamp with time zone
  )return timestamp with time zone
  ```
  表32DBE_SCHEDULER.EVALUATE_CALENDAR_STRING接口参数说明 
  | 参数                | 类型                       | 入参/出参 | 是否可以为空 | 描述           |
  |:---|:---|:---|:---|:---|
  | calendar_string   | TEXT                     | IN    | 否      | 定时任务日期字符串。   |
  | start_date        | TIMESTAMP WITH TIME ZONE | IN    | 否      | 定时任务开始时间。    |
  | return_date_after | TIMESTAMP WITH TIME ZONE | IN    | 否      | 定时任务返回日期。    |
  | next_run_date     | TIMESTAMP WITH TIME ZONE | OUT   | 否      | 定时任务返回下一个日期。 |
     
  示例：
  ```
  gaussdb=# CREATE OR REPLACE PROCEDURE pr1(calendar_str text) as
  DECLARE
      start_date        timestamp with time zone;
      return_date_after timestamp with time zone;
      next_run_date     timestamp with time zone;
  BEGIN
      start_date := '2003-2-1 10:30:00.111111+8'::timestamp with time zone;
      return_date_after := start_date;
      DBE_SCHEDULER.evaluate_calendar_string(
          calendar_str,
          start_date, return_date_after, next_run_date);
      DBE_OUTPUT.PRINT_LINE('next_run_date: ' || next_run_date);
      return_date_after := next_run_date;
  END;
  /
  CREATE PROCEDURE
  gaussdb=# CALL pr1('FREQ=hourly;INTERVAL=2;BYHOUR=6,10;BYMINUTE=0;BYSECOND=0');
  next_run_date: 2003-02-02 06:00:00+08
   pr1 
  -----
  (1 row)
  ```
  
 
