在EasySQLMAIL中使用全局变量

1 什么是全局变量

2 配置全局变量

3 使用全局变量

4 使用@@PutGlobalVar动态设置全局变量的值

 

1 什么是全局变量

EasySQLMAIL提供了全局变量功能。设置全局变量后,在所有任务中都可以使用这些变量。您可以把一些需要共用的变量设置为全局变量以便于系统维护。

EasySQLMAIL中的全局变量有两种类型。明文全局变量和加密全局变量。下表是这两种全局变量的区别。

两种全局变量的区别

明文全局变量

加密全局变量

存储

存储为明文

加密后存储

显示

会在任务日志中显示变量值

在任务日志中显示为"****"

使用方法及有效范围

通过@@GetGlobalVar获取变量值,在任务中任何位置都可以使用

通过@@GetGlobalVarForHTTPCmd获取变量值,仅能在HTTP命令中使用

使用建议

当变量值是普通文字,不涉及机密时,可以使用这种类型

保密性高。当变量值涉及机密(例如Web API的AccessToken等),并且只在HTTP命令中使用时,可以使用这种类型

2 配置全局变量

在EasySQLMAIL控制台中点击系统设置按钮,然后点击对话框中的"全局变量管理"按钮打开全局变量管理器。

全局变量管理器

在全局变量管理器中,您可以创建、修改和删除全局变量。

对全局变量的修改和删除会立即生效。

创建全局变量

您可以点击全局变量管理器中的"添加加密的全局变量"或"添加普通全局变量"按钮打开全局变量配置对话框。两个按钮创建的全局变量的区别请参阅"两种全局变量的区别"

全局变量配置对话框

在这个对话框中:

变量名称

为全局变量设置一个名称。变量名称必须唯一,不区分大小写。变量名称中不能包含除文字、数字下划线外的其它字符,且不能以数字开头。

使用范围

对于加密全局变量,使用范围只能是"仅在HTTP命令中使用"。对于明文全局变量,有效范围则是"全部范围"。

变量值来源

设置变量值的来源。变量值来源可以是以下选项:

(静态)配置全局变量时输入: 由用户在配置全局变量时输入变量的值。

(动态)由任务运行时动态赋值: 用户可以在任务中使用SQL语句在任务运行时使用@@PutGlobalVar方法动态设置全局变量的值。例如,以下语句可以在任务运行时把全局变量"access_token"的值设置为"XXXX":

SELECT 'XXXX' as access_token @@PutGlobalVar;

变量值

如果"变量值来源"是"(静态)配置全局变量时输入",则在这里设置全局变量的值。

对于加密全局变量,变量值仅在创建变量时显示为明文。以后在配置界面上显示为"●●●●●●"。

可使用此变量的域

如果变量的"使用范围"是"仅在HTTP命令中使用",需要在这里设置可以使用此变量的服务器域名。例如"api.weixin.qq.com"或"dingding.com"等。

如果允许变量在多个域名上使用,请用";"(分号)分隔多个域名。

在使用这些变量时,系统会用HTTP命令要调用URL中的主机部份的结尾字符与这里配置的域名进行对。如果试图在"可使用此变量的域"以外的其它域名上使用此变量时,EasySQLMAIL会报错并中止任务。

例如:

microsoft.com 表示可以在所有域名以microsoft.com结尾的URL上使用此变量。

login.microsoft.com 表示可以在所有域名以login.microsoft.com结尾的URL上使用此变量。

microsoft.com;azure.com 表示可以在所有域名以microsoft.com或azure.com结尾的URL上使用此变量。

设置可以在任务中使用此变量的用户

设置可以在任务中使用此变量的用户。这些用户可以在其创建的任务中使用@@GetGlobalVar或@@GetGlobalVarForHTTPCmd方法获取此变量的值。

系统管理员(admin用户)始终有此权限。

如果选择"-1(所有用户)",则所有用户(包括以后创建的新用户)都可以获得此权限。

设置可以在任务中用@@PutGlobalVar方法设置此变量值的用户

设置可以在任务中设置此变量的值的用户。选中的用户可以在他们创建的任务中使用@@PutGlobalVar方法设置此变量的值。

系统管理员(admin用户)始终有此权限。

如果选择"-1(所有用户)",则所有用户(包括以后创建的新用户)都可以获得此权限。

备注

为全局变量输入备注(可选)。

3 使用全局变量

您可以在任务中用"@@GetGlobalVar"方法来获取全局变量的值,也可以在HTTP命令中用"@@GetGlobalVarForHTTPCmd"获取一个加密的全局变量的值。

全局变量的使用方法

@@GetGlobalVar(VarName)

获取一个明文全局变量的值。参数"VarName"是要获取的全局变量的名称。

可以在任务中任何允许使用变量的位置使用此方法

示例: 在一个SQL语句中使用全局变量"SystemName"的值

SELECT #[@@GetGlobalVar(SystemName)]# as system_name

@@GetGlobalVarForHTTPCmd(VarName)

在HTTP命令中获取一个加密全局变量的值。参数"VarName"是要获取的全局变量的名称。

此方法只允许在HTTP命令的SQL语句中使用。

示例: 在一个HTTP命令的SQL语句中使用全局变量"Access_Token"的值构造HTTP请求

SELECT
'
url:https://test.com/api/conversations.list
header:Authorization=Bearer #@@GetGlobalVarForHTTPCmd(Access_Token)#
header:Content-type=application/x-www-form-urlencoded
' AS _http_request_

4 使用@@PutGlobalVar动态设置全局变量的值

EasySQLMAIL允许您在任务中用SQL语句设置全局变量的值。

如果要使一个全局变量的值可以被动态设置,需要把变量的"变量值来源"设置为"(动态)由任务运行时动态赋值"。

把全局变量的"变量值来源"设置为"(动态)由任务运行时动态赋值"

您可以在任务的SQL语句中使用"@@PutGlobalVar"方法设置全局变量的值。当SQL语句中出现此方法时,EasySQLMAIL会把SQL语句查询到的列名作为全局变量的名称,并把查询到的数据的第一行的值设置为全局变量的值。例如,以下语句会把全局变量access_token的值设置为"XXXX":

SELECT 'XXXX' AS access_token #@@PutGlobalVar#;

下面这个语句会把全局变量"system_name"的值设置为"My Report System", 把"manager_name"的值设置为"Andy":

SELECT 'My Report System' AS system_name, 'Andy' AS manager_name #@@PutGlobalVar#;

注意: 如果SQL查询结果中的列名在全局变量表中不存在时,@@PutGlobalVar会报错,任务可能会被中止.因此请在SQL语句中只返回与需要设置的全局变量名相对应的列名。

最后更新时间: 2025-01-22