EasySQLMAIL使用教程-配置SQL语句

无标题 1

1 关于SQL语句

2 任务SQL命令

3 邮件模板中的SQL语句

4 用SQL语句计算变量值

 

1 关于SQL语句

EasySQLMAIL使用SQL语句从数据源查询数据。

在EasySQLMAIL中,主要有以下几处需要用到SQL语句配置:

  • 邮件模板中指定查询数据的SQL语句
  • 任务中的SQL命令
  • 生成变量

在配置SQL语句时,可以在一个配置中写入多个SQL语句。例如,可以直接在一条“任务SQL命令”中写入多个语句,语句之间用;”(分号)分隔。

如果数据源是Oracle数据库,还可以直接在SQL语句中写入匿名块。

此外,还可以在SQL语句中使用变量来编写运行时可以动态修改的SQL语句。如要了解“在SQL语句中使用变量”的详细信息,请参阅《EasySQLMAIL使用教程-在任务中使用变量》

一个SQL语句配置中可以输入多条SQL语句

配置SQL语句时需要注意:

  • 如果SQL语句是要求返回数据的,例如,SQL语句是邮件模板中的取数SQL语句,或是用来计算变量值的SQL语句,那么SQL语句中的最后一个语句必须是返回数据集的SQL语句(例如SELECT语句)。EasySQLMAIL会使用最后一个语句返回的数据集作为表格的数据或是变量的值。

  • 在执行一个任务时,同一个数据源只会打开一个连接。如果SQL语句中修改了数据,并且需要提交修改的话,那么必须在语句中用COMMIT语句显示提交事务,以确保修改后的数据得到保存。

  • 变量的SQL语句在计算变量值时才会被执行。如果变量在任务中没有被引用,那么变量的SQL语句是不会被执行的。因此不建议将数据修改语句放到变量的SQL语句中执行。

  • 在EasySQLMAIL中,“测试SQL语句”的本质是在数据源上运行所输入的SQL语句。因此需要注意,如果SQL语句中有UPDATE、INSERT、DELETE或是ALTER、DROP、TRUNCATE TABLE等语句,这些语句在测试时将被真实的执行。因此,在测试SQL语句前您需要确保运行这些SQL语句不会对数据库造成不良影响。

2 任务SQL命令

任务SQL命令是指在执行数据发布任务时要执行的一些额外的SQL命令。

例如,可以在任务开始执行前,先执行一段SQL语句判断数据是否就绪,如果数据未就绪,就不执行任务。

也可以在任务开始执行前,先执行一些SQL语句生成要发布的数据,然后在后续的取数过程中使用这些数据。

任务的SQL命令管理界面

SQL命令配置界面

在SQL命令配置界面中:

数据源 选择执行SQL语句时要连接的数据源
执行时机 指在什么时候执行SQL语句。
  • 任务开始前执行:指当任务启动后,在开始提取数据前执行此SQL语句。
  • 任务结束后执行:指在任务结束后(无论成功还是失败)执行此SQL语句
  • 任务成功结束后执行:指在任务成功结束后执行此SQL语句
  • 任务失败后执行:指在任务失败后执行此SQL语句
作为任务执行的先决条件 对于执行时机为“任务开始前执行”的SQL语句,当选择了此选项时,EasySQLMAIL会检查SQL语句是否返回了数据行,如果SQL语句中的最后一个语句执行后返回的结果集为空,这时EasySQLMAIL将认为任务执行的先决条件不成立,进而停止执行任务。
例如:在执行任务前,需要先检查当天的统计数据是否生成,如果未生成,则不执行任务:
SELECT 1 FROM stat_data WHERE stat_date = TRUNC(SYSDATE)
如果当天的数据已生成,那么这个语句返回的果不为空,这时就继续执行任务,否则,语句返回空结果集,就说明当天的统计数据还没有生成,这时就不继续执行任务。
在设置先决条件时需要注意不要使用COUNT计数来确定条件是否成立,例如,不要用
SELECT COUNT(*) FROM stat_data WHERE stat_date = TRUNC(SYSDATE)
因为无论是否有符合条件的数据,此语句总是会返回一条记录,而只要SQL语句返回的结果集不为空,EasySQLMAIL就会认为先决条件成立,因此不能使用这样的SQL语句作为先决条件判断语句,而应该使用下面的语句来判断:
SELECT 1 FROM stat_data WHERE stat_date = TRUNC(SYSDATE)
先决条件不成立时的提示语 指当该语句所对应的先决条件不成立时,如何记录提示语。该提示语将被记录到日志中,例如,对于上例,当
SELECT 1 FROM stat_data WHERE stat_date = TRUNC(SYSDATE)
返回空结果集时,提示语可以设置为:“当天的统计数据还未生成,任务中止”。这句话将会被记录到任务的执行日志中,便于在查询任务日志时理解任务未执行的原因。
SQL语句 输入要执行的SQL语句。如果有多个语句要执行,各个语句之间用“;”(分号)分隔开。

 

3 邮件模板中的SQL语句

在邮件模板中,需要配置提取数据的SQL语句。EasySQLMAIL将根据邮件模板中配置的SQL语句来确定如何提取和转换数据。

邮件模板的查询语句配置窗口

邮件模板的SQL语句配置过程如下:

(1)选择要查询的数据源;

(2)输入提取数据的SQL语句,并点击“测试SQL语句”按钮。EasySQLMAIL将在所选数据源上运行输入的SQL语句,并取得运行后的数据字段信息,并将数据列显示到窗口右方的“未关联数据字段”列表中。

输入SQL语句并测试

(3)在“未关联的数据字段”列表中,选择要显示到正文或是要转换到附件表格中的数据字段,然后点击“增加关联关系”,表示要将选定的数据字段显示到最后生成的邮件中。在简单行列式表格中,如果要将所有数据字段都显示到结果表格中,可以直接勾选“将查询结果的所有字段全部转换到表格中”选项。

(4)对于“邮件正文”、“HTML格式文本”、“自定义Excel文件”类型的模板,在编写SELECT语句时,可以用SQL语言中的“AS”关键字将返回的列名命名为与模板中的数据单元格名称一致,在“增加关联关系”时,EasySQLMAIL会自动匹配名称一致的数据单元格数据字段,并为之建立关联关系。

 

4 用SQL语句计算变量值

EasySQLMAIL中,可以使用SQL语句来计算变量的值。例如,自定义变量cnt的作用是取符合条件的清单数,变量的选项可以这样设置:

变量cnt的设置

EasySQLMAIL在执行任务时,会使用SQL语句SELECT COUNT(*) FROM t_users返回的结果集中的第一个字段的值作为变量的值。

如果SQL语句没有返回结果集,这时变量的值将为NULL。

如果SQL语句返回了多行数据,在变量作为文本显示的情况下,将只显示第一行第一列的数据,在变量作为“收件人”的情况下,每一行第一列数据都将被作为一个邮件地址对待。

有关SQL语句的更多信息,请参考《EasySQLMAIL系统操作手册》中的相关内容。

感谢您阅读本文档。

文档最后更新时间:2015-10-09
相关文档