EasySQLMAIL系统操作手册->任务管理->任务SQL命令配置
EasySQLMAIL允许在任务开始前或任务结束后执行一些额外的SQL语句,例如,可以在任务执行成功后执行一个 SQL语句,更新用户自己创建的任务记录表中的一行记录。还可以设置在任务开始前先查询某一个表的数据,当数据满足某些条件时,才继续执行任务。
点击"任务属性"界面中的"SQL命令"Tab页,进入SQL命令管理界面。
SQL命令管理界面
EasySQLMAIL在执行任务时,按SQL命令列表中的从上到下顺序执行SQL命令。
点击"新建SQL",打开"新建SQL命令"对话框:
新建SQL命令对话框
在这个对话框中:
数据源 | 选择执行SQL语句时要连接的数据源 | |
执行时机 | 指在什么时候执行SQL语句。 任务开始前执行:指当任务启动后,在开始提取数据前执行SQL语句。 任务结束后执行:指在任务结束后(无论成功还是失败)执行SQL语句 任务成功结束后执行:指在任务成功结束后执行SQL语句 任务失败后执行:指在任务失败后执行SQL语句 |
|
执行场景 |
可以选择SQL命令的执行场景。可选项如下: 只在主任务中执行(默认) 只在“普通任务”或是“循环任务的主任务”中执行对应的SQL命令。如果任务是循环任务生成的子任务实例,则不会运行对应的SQL命令。 只在循环任务的子任务中执行 只在“循环任务生成的的子任务”中执行对应的SQL命令。循环任务的主任务和普通任务都不会执行对应的SQL命令。 在所有场景中执行 在所有场景中都需要执行对应的SQL命令。 |
1.0.1208以上版本 |
作为任务执行的先决条件 |
对于执行时机为“任务开始前执行”的SQL语句,当选择了此选项时,EasySQLMAIL会检查SQL语句是否返回了数据行,如果SQL语句中的最后一个语句执行后返回的查询为空,这时EasySQLMAIL将认为任务执行的先决条件不成立,进而停止执行任务。 例如:在执行任务前,需要先检查当天的统计数据是否生成,如果未生成,则不执行任务: SELECT 1 FROM stat_data WHERE stat_date = TRUNC(SYSDATE) 如果当天的数据已生成,那么这个语句返回的果不为空,这时就继续执行任务,否则,语句返回空结果集(没有返回记录),就说明当天的统计数据还没有生成,这时就不继续执行任务。 |
|
先决条件成立的情况 |
可以选择“查询返回的记录集不为空”或“查询返回的记录集不为空,且第一行第一列的值为某个值”时视为先决条件成立,任务继续运行。 例如:可以设置先决条件在任务启动前检查是否有需要推送的数据,当统计语句返回的数值大于0时,继续执行任务,否则停止执行任务: |
|
先决条件不成立时的提示语 | 指当该语句所对应的先决条件不成立时,如何记录提示语。该提示语将被记录到日志中。 例如,对于上例,当语句返回的第一个字段的数值为0时,提示语可以设置为:“当天的统计数据还未生成,任务中止”。这句话将会被记录到任务的执行日志中,便于在查询任务日志时理解任务未执行的原因。 |
|
SQL语句 | 输入一个或多个SQL语句。如果有多个语句要执行,各个语句之间用“;”(分号)分隔开。 例如: DELETE FROM t_status WHERE id = 1; SELECT 1 FROM stat_date WHERE org_id = 8001441; 您还可以在SQL语句中嵌入变量。例如: SELECT 1 FROM stat_data WHERE org_id = #orgId#; 这样就在SQL语句中嵌入了一个名为orgId的变量。EasySQLMAIL在执行这个SQL语句时,会根据变量的配置,先计算orgId变量的值,然后将orgId的值替换到SQL语句中,再执行替换后的SQL语句。如果变量orgId计算出的值是8001441,那么替换到SQL语句中后,最后实际执行的SQL语句就是: SELECT * FROM stat_data WHERE org_id = 8001441; |