有关动态 AE 环境变量的其他信息
NZAE_DYNAMIC_ENVIRONMENT 变量根据动态 AE 环境变量激活参数。 (也可以用 register_ae 的--dynamic选项来设置) 如果设置为 0,则不支持默认的动态 AE 环境变量。 如果设置为 2,系统将使用 AE 的最后一个参数(字符串)来指定值。
NZAE_DYNAMIC_ENVIRONMENT={0 | 2} (feature disabled, default)
NZAE_DYNAMIC_ENVIRONMENT=2 (environment variables from last argument)
当 NZAE_DYNAMIC_ENVIRONMENT 设置为 2 时,函数必须定义为接受一个字符串类型的参数作为额外的最终参数,该参数可用于传递一个或多个额外的环境变量。 如果 AE-ENV 密钥名称与已通过注册定义的变量相匹配,则动态变量优先于已注册的变量。
环境变量指定为name1=value1、name2=value2,以此类推。 环境变量使用以下语法:
- 使用逗号作为变量分隔符。
- 使用双引号作为引号字符。
- 包含空格和/或逗号的值必须用双引号括起来,否则空格将被忽略。
- 如果数值带有引号,则在解析后删除双引号。
- 如果数值中需要双引号字符,请使用反斜杠("\")字符转义。
示例
NZAE_EXECUTBLE_PATH=/bin/ae, data1="1,2,3,4,5,6", data2=wx\"b\"yz,data3="I am
an \"IBMer\""
启用 NZAE_DYNAMIC_ENV 后,这将作为最后一个参数,成为 SQL 调用的一部分:
Select func(arg1,'NZAE_EXECUTABLE=/bin/ae...');经过解析后,就变成了NZAE_EXECUTBLE_PATH=/bin/ae
data1=1,2,3,4,5,6
data2=wx"b"yz
data3=I am an "IBMer"解析后,动态环境变量将被完全视为注册环境变量。 这包括使用 NZAE_APPEND_、NZAE_PREPEND_、NZAE_HOST_ONLY_ 和 NZAE_SPU_ONLY_ 等前缀进行处理。
下面是一个使用动态 AE 环境变量调用主类DataMatrix:的 Java AE 的 SQL 示例:
SELECT * FROM demo, TABLE WITH FINAL(aedemo_varchar_dyn(f1,f2,f3,f4,
'NZAE_EXECUTABLE_PATH=%
{AEDEV_JAVA_JVM},NZAE_NUMBER_PARAMETERS=1,NZAE_PARAMETER1=DataMatrix'));上面代码片段中的字符串{AEDEV_JAVA_JVM}是 AE 环境变量替换,AE 环境变量替换一节对此有更详细的介绍。
如果 AE 将最后一个参数视为函数单字符串参数,则可以控制变量替换,因为它总是在 AE 环境变量中看到结果(换句话说,如果 AE 将此函数视为需要 4 个或 5 个参数)。 第五个参数是包含 ENV 变量的字符串,根据 NZAE_DYNAMIC_ENVIRONMENT_PASS_LAST_ARGUMENT 的设置,可以传递也可以不传递。
默认情况下,NZAE_DYNAMIC_ENVIRONMENT_PASS_LAST_ARGUMENT 设置为 0,表示不将最后一个参数传递给 AE,这是推荐的设置。 在上面的例子中,当参数设置为 0 时,AE 会看到 4 个参数;当参数设置为 1 时,AE 会看到 5 个参数。
NZAE_DYNAMIC_ENVIRONMENT_PASS_LAST_ARGUMENT={0 | 1}当 NZAE_DYNAMIC_ENVIRONMENT 值不为零时,AE 运行时系统希望指定最后一个字符串参数,如果找不到则返回错误。 这包括数据片没有数据的情况。 要抑制空数据片情况下的错误,请指定以下内容:
NZAE_DYNAMIC_ENVIRONMENT_INGORE_LAST_RUN_ERROR
(value 0 or 1, default is 1)如果数据片没有为查询生成数据,那么 AE 运行时就无法接收动态 AE 环境变量。 默认情况下,空数据片不会启动 AE。 由于没有数据,这通常是正确的行为;但在某些情况下,它可能会被标记为错误。 以下设置会导致错误:
NZAE_DYNAMIC_ENVIRONMENT_INGORE_LAST_RUN_ERROR=0