临时变量是EasySQLMAIL提供的一种灵活的变量类型。您可以在任务的SQL语句中使用@@PutTempVar把SQL查询到的第一行数据存放到临时变量表中,并在需要使用这些数据的地方用@@GetTempVar取得这些数据。
与任务变量不同,临时变量不需要在任务配置时声明,只需要@@PutTempVar生成变量表即可。临时变量仅在生成它的任务实例中有效。
例如,您可以在任务中使用下面这样的语句把查询到的第一行数据保存到临时变量表中:
--查询user_id=1的用户的user_name,age和city并存入临时变量表中
SELECT
user_name, age, city
FROM user_info
WHREE user_id = 1 #@@PutTempVar#
这个语句执行后,会在任务实例的临时变量表里添加三个临时变量,变量名分别是user_name, age和city。
您可以在这个任务实例的其它地方用@@GetTempVar取得这些变量的值:
--查询user_name,age和city与前面查询到的用户相同的所有用户列表
SELECT
user_id, user_name, age, city, create_time
FROM user_info
WHERE user_name = #[@@GetTempVar(user_name)]#
AND age = #[@@GetTempVar(age)]#
AND city = #[@@GetTempVar(city)]#
您可以在任务的SQL语句中使用@@PutTempVar把查询结果中的第一行记录保存到任务实例的临时变量表中。变量的名称与SQL查询结果的列名相同。
例如,下面的语句会把查询到的第一行数据保存到任务实例的临时变量表中。语句执行后,临时变量表中会增加user_name, age, city三个变量。
--查询user_id=1的用户的user_name,age和city并存入临时变量表中
SELECT
user_name, age, city
FROM user_info
WHREE user_id = 1 #@@PutTempVar#
变量名不区分大小写。如果变量已经存在,则旧的变量值会被覆盖。
Note: 使用@@PutTempVar方法时,SQL查询结果的列名中不能包含除文字、数字和下划线之外的其它符号,否则任务会报错。
您可以在任务中使用@@GetTempVar方法获取临时变量的值。
例如,下面的语句会从任务实例的临时变量表中获取user_name, agr和city的值,并把这些值作为SQL语句的查询参数:
--查询user_name,age和city与前面查询到的用户相同的所有用户列表
SELECT
user_id, user_name, age, city, create_time
FROM user_info
WHERE user_name = #[@@GetTempVar(user_name)]#
AND age = #[@@GetTempVar(age)]#
AND city = #[@@GetTempVar(city)]#
除了@@PutTempVar外,EasySQLMAIL还提供了一个@@PutEncryptedTempVar方法用于在任务中创建加密存放的临时变量。
通过@@PutEncryptedTempVar设置临时变量时,系统会把变量值加密后存放在变量表中。只有在HTTP命令中用@@GetEncryptedTempVarForHTTPCmd方法才能获取这些变量的值。并且变量值在任务日志中显示为"****"。
对于需要保密的临时变量,例如Web API的AccessToken,您可以使用这种方式设置临时变量,以保证机密信息的安全。
@@PutEncryptedTempVar的使用方法与@@PutTempVar相同。在同一个SQL语句中,@@PutTempVar和@@PutEncryptedTempVar只能出现其中一个。
例如,下面的语句会在任务实例的临时变量表中添加一个名为"access_token"的加密临时变量:
SELECT
'XXXX' AS access_token
FROM user_info
WHERE user_id = 1 #@@PutEncryptedTempVar#;
您可以在HTTP命令的SQL语句中使用@@GetEncryptedTempVarForHTTPCmd方法获取加密临时变量的值。
例如,下面的语句从临时变量表中获取加密变量access_token的值,用于构造一个HTTP请求:
SELECT
'
url:https://test.com/api/conversations.list?limit=100&types=public_channel,private_channel,mpim,im
header:Authorization=Bearer #@@GetEncryptedTempVarForHTTPCmd(access_token)#
header:Content-type=application/x-www-form-urlencoded
' AS _http_request_