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;