-- ============================================================ -- beforerun 函数链:set / add / mod / case -- ============================================================ -- 1. beforerun set 设置变量 /** beforerun(set(myvar, 'hello_mql')) **/ ; -- 使用变量插入 insert into /test/aaa/test_ext (e_name, e_value, e_text) values ('beforerun_set', 1, {%s,myvar}) /** onerror(continue,'JsonKeyValue') **/ ; select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_set' /** output() onerror(continue) **/ ; -- 2. beforerun add 累加 /** beforerun(set(counter, 10), add(counter, 5)) **/ ; insert into /test/aaa/test_ext (e_name, e_value, e_text) values (concat('beforerun_add_', {%d,counter}), {%d,counter}, 'add test') /** onerror(continue) **/ ; select e_name, e_value from /test/aaa/test_ext where e_name=^'beforerun_add' /** output() **/ ; -- 3. beforerun add 带单位(时间累加) /** beforerun(set(ct, '2024-01-01 00:00:00'), add(ct, 30, second)) **/ ; insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_time', concat('ct=', {%t,ct})) /** onerror(continue) **/ ; -- 4. beforerun mod 取模 /** beforerun(set(mod_val, 17), mod(mod_val, 5)) **/ ; insert into /test/aaa/test_ext (e_name, e_value, e_text) values (concat('beforerun_mod_', {%d,mod_val}), {%d,mod_val}, 'mod test 17%5') /** onerror(continue) **/ ; select e_name, e_value from /test/aaa/test_ext where e_name=^'beforerun_mod' /** output() **/ ; -- 5. beforerun case 条件判断 /** beforerun(set(case_val, 'yes'), case(case_val,'yes')) **/ ; insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_yes', 'case matched yes') ; select e_name from /test/aaa/test_ext where e_name='beforerun_case_yes' /** output() count(1) **/ ; -- 6. beforerun case 不匹配 /** beforerun(set(case_val, 'no'), case(case_val,'yes')) **/ ; -- 当 case 不匹配时,该语句会被跳过 insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_no', 'case not matched - should not execute') ; -- 验证 case 不匹配时语句被跳过 select e_name from /test/aaa/test_ext where e_name='beforerun_case_no' /** output() onerror(continue) **/ ;