17beforerun.mql 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. -- ============================================================
  2. -- beforerun 函数链:set / add / mod / case
  3. -- ============================================================
  4. -- 1. beforerun set 设置变量
  5. /**
  6. beforerun(set(myvar, 'hello_mql'))
  7. **/
  8. ;
  9. -- 使用变量插入
  10. insert into /test/aaa/test_ext (e_name, e_value, e_text) values ('beforerun_set', 1, <myvar>)
  11. ;
  12. select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_set'
  13. /**
  14. output()
  15. match("e_text","hello_mql")
  16. **/
  17. ;
  18. -- 2. beforerun add 累加
  19. /**
  20. beforerun(set(counter, 10), add(counter, 5))
  21. **/
  22. ;
  23. insert into /test/aaa/test_ext (e_name, e_value, e_text) values (concat('beforerun_add_', <counter>), {%d,counter}, 'add test')
  24. ;
  25. select e_name, e_value from /test/aaa/test_ext where e_name=^'beforerun_add'
  26. /**
  27. output()
  28. **/
  29. ;
  30. -- 3. beforerun add 带单位(时间累加)
  31. /**
  32. beforerun(set(ct, '2024-01-01 00:00:00'), add(ct, 30, second))
  33. **/
  34. ;
  35. insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_time', concat('ct=', {%t,ct}))
  36. ;
  37. -- 4. beforerun mod 取模
  38. /**
  39. beforerun(set(mod_val, 17), mod(mod_val, 5))
  40. **/
  41. ;
  42. insert into /test/aaa/test_ext (e_name, e_value, e_text) values (concat('beforerun_mod_', <mod_val>), {%d,mod_val}, 'mod test 17%5')
  43. ;
  44. select e_name, e_value from /test/aaa/test_ext where e_name=^'beforerun_mod'
  45. /**
  46. output()
  47. **/
  48. ;
  49. -- 5. beforerun case 条件判断
  50. /**
  51. beforerun(set(case_val, 'yes'), case(case_val,'yes'))
  52. **/
  53. ;
  54. insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_yes', 'case matched yes')
  55. ;
  56. select e_name from /test/aaa/test_ext where e_name='beforerun_case_yes'
  57. /**
  58. output()
  59. count(1)
  60. **/
  61. ;
  62. -- 6. beforerun case 不匹配
  63. /**
  64. beforerun(set(case_val, 'no'), case(case_val,'yes'))
  65. **/
  66. ;
  67. -- 当 case 不匹配时,该语句会被跳过
  68. insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_no', 'case not matched - should not execute')
  69. ;
  70. -- 验证 case 不匹配时语句被跳过
  71. select e_name from /test/aaa/test_ext where e_name='beforerun_case_no'
  72. /**
  73. output()
  74. count(0)
  75. **/
  76. ;