PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
在 PQL 中,有非常多的嵌入符号,用于将 PQL 元素嵌入到原生 SQL 语句或其他语句中。各种嵌入在相关章节已有介绍,现在将各嵌入规则汇总一下。
除 ECHO 语句以外,其他语句的嵌入规则和解析顺序基本一致,适用于几乎所有场景。
PQL、OneApi 接口或 Voyager 模板引擎传递的参数
格式 #{name}
防止SQL注入的格式 #{'name'}
或 #{"name"}
嵌入式 PQL 和 Voyager 模板引擎包围符号
<%= value %>
<%= expression %>
<%! staement %>
,仅在 Voyager 中主页面使用母版页时可用,可将一段逻辑提到最前面执行。变量
包括用户变量、全局变量和调度变量。用户变量格式 $name
或 $(name)
,全局变量格式 @name
或 @(name)
,调度变量格式 %name
或 %(name)
。带括号是为了防止字符冲突。
集合变量属性和索引
如 $row.field
、$list[2]
、$table['id'].first
等,详见集合类型的元素访问。
函数
Sharp 表达式
格式 ${ expression -> link }
或 ${ sentence -> link }
,其中link
为“操作”。详见 Sharp 表达式
查询表达式
格式 ${{ sentence -> link }}
Sharp 表达式的高级形式,其中link
可选。详见查询表达式。
忽略传值类型
一般用于去掉嵌入变量或表达式结果字符串两端的引号,写在嵌入的变量或表达式之后,是一个叹号!
,如$name!
、@name!
、${expression}!
、${{sentence}}!
。
格式@{offset
}或@{id}
,仅用于这两条语句。
JDBC 原生查询占位符
格式为一个问号?
,如UPDATE table1 SET name=? WHERE id=?
,需按数量和顺序进行传值。一般用于 PUT 语句和 BATCH 语句中。
PASS 语句/PUT 语句/TRANS 语句/PROCESS 语句/BATCH 语句 中的传值符号
#name
或#(name)
,不判断数据类型;&name
或&(name)
,判断数据类型决定是否加引号。上述占位符中,比较常用的是第3
、5
和10
项。
ECHO 语句的占位符及解决顺序如下:
多语言符号
格式为 # holder #
,参见 Voyager 多语言支持。ECHO 多语言支持在v1.5.0
版本中不再支持。
嵌入式变量
格式为${name}
或@{name}
,替换时不保留引号。即将在未来的版本中取消支持,不建议再使用。因为 ECHO 语句主要用于嵌入式 PQL 和模板引擎,所以建议由<%=$name%>
和<%=@name%>
代替。
参考链接