-- ============================================================ -- 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'), set(case_result, 'default'), case(case_val=='yes', set(case_result, 'matched'))) **/ ; insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_yes', {%s,case_result}) ; select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_case_yes' /** output() match("e_text","matched") **/ ; -- 6. beforerun case 条件不匹配 /** beforerun(set(case_val, 'no'), set(case_result, 'default'), case(case_val=='yes', set(case_result, 'matched'))) **/ ; insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_no', {%s,case_result}) ; -- 验证 case 不匹配时保持默认值 select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_case_no' /** output() match("e_text","default") **/ ;