完整的占位符和嵌入规则表

在 PQL 中,有非常多的嵌入符号,用于将 PQL 元素嵌入到原生 SQL 语句或其他语句中。各种嵌入在相关章节已有介绍,现在将各嵌入规则汇总一下。

通用规则

ECHO 语句以外,其他语句的嵌入规则和解析顺序基本一致,适用于几乎所有场景。

  1. PQL、OneApi 接口Voyager 模板引擎传递的参数

    格式 #{name}
    防止SQL注入的格式 #{'name'}#{"name"}

  2. 嵌入式 PQLVoyager 模板引擎包围符号

    • 输出单个值格式 <%= value %>
    • 输出单个语句或表达式<%= expression %>
    • 多行语句或逻辑,每条语句之间使用分号隔开。
    • 逻辑前置 <%! staement %>,仅在 Voyager 中主页面使用母版页时可用,可将一段逻辑提到最前面执行。
  3. 变量

    包括用户变量全局变量调度变量。用户变量格式 $name$(name) ,全局变量格式 @name@(name),调度变量格式 %name%(name)。带括号是为了防止字符冲突。

  4. 集合变量属性和索引

    $row.field$list[2]$table['id'].first 等,详见集合类型的元素访问

  5. 函数

    包括用户函数全局函数,格式$fun(arg)@fun(arg1, arg2),多个函数参数之是使用逗号,隔开。

  6. Sharp 表达式

    格式 ${ expression -> link }${ sentence -> link },其中link为“操作”。详见 Sharp 表达式

  7. 查询表达式

    格式 ${{ sentence -> link }} Sharp 表达式的高级形式,其中link可选。详见查询表达式

  8. 忽略传值类型

    一般用于去掉嵌入变量或表达式结果字符串两端的引号,写在嵌入的变量或表达式之后,是一个叹号!,如$name!@name!${expression}!${{sentence}}!

  9. PAGE 语句BLOCK 语句中的分页或分块参数

    格式@{offset}或@{id},仅用于这两条语句。

  10. JDBC 原生查询占位符

    格式为一个问号?,如UPDATE table1 SET name=? WHERE id=?,需按数量和顺序进行传值。一般用于 PUT 语句BATCH 语句中。

  11. PASS 语句/PUT 语句/TRANS 语句/PROCESS 语句/BATCH 语句 中的传值符号

    • 格式#name#(name),不判断数据类型;
    • 格式&name&(name),判断数据类型决定是否加引号。

上述占位符中,比较常用的是第3510项。

ECHO 语句

ECHO 语句的占位符及解决顺序如下:

  1. 多语言符号

    格式为 # holder #,参见 Voyager 多语言支持。ECHO 多语言支持在v1.5.0版本中不再支持。

  2. 嵌入式变量

    格式为${name}@{name},替换时不保留引号。即将在未来的版本中取消支持,不建议再使用。因为 ECHO 语句主要用于嵌入式 PQL 和模板引擎,所以建议由<%=$name%><%=@name%>代替。


参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!