PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
与用户变量不同,用户变量的作用域仅在当前 PQL 过程或者控制语句内部,全局变量作用域是整个 PQL 环境,可以在同一个系统的任何 PQL 过程中使用。
全局变量以@
符号开头,全名规则与用户变量相同,变量名也不区分大小写,但字母建议全部大写。
@NOW
当前时间,包含时分秒及毫秒等信息@TODAY
今天的日期,时分秒均为0
@YEAR
当前年,整数@MONTH
当前月,整数@DAY
当日,整数@HOUR
当前小时,整数@MINUTE
当前分钟,整数@SECOND
当前秒,整数@MILLISECOND
当前毫秒,整数@MICROSECOND
当前微秒,整数@TIMESTAMP
当前时间的时间戳(精确到秒)。@MILLISTAMP
当前时间的时间戳(精确到毫秒)。@YESTERDAY
昨天的日期,时分秒均为0
@TOMORROW
明天的日期,时分秒均为0
@ARGUMENTS
可以获得传递给 PQL 的所有参数,这是一个数据行。
@KEEPER_IS_RUNNING
判断 Keeper 是否在运行。
@KEEPER_HTTP_SERVICE
查找可用的 Keeper Http 服务地址,包括 IP 地址和端口,如192.168.1.1:7700
。如果 Keeper 在运行,则返回可用资源最多的那台机器。@KEEPER_HTTP_ADDRESS
可以设置一个常用的 Keeper Http 服务节点的 IP 地址。可以在系统中设置。@KEEPER_HTTP_PORT
可以设置 Keeper Http 服务端口,默认值为 7700。可以系统中设置。@KEEPER_HTTP_TOKEN
访问 Keeper Http 服务的 TOKEN,可以系统中设置。
@COUNT_OF_LAST_SELECT
@ROWS
的完整写法@AFFECTED_ROWS
最后一个非查询语句影响数据库的行数@AFFECTED_ROWS_OF_LAST_NON_QUERY
@AFFECTED_ROWS
的完整写法@COUNT
最后一条GET
语句获取的数据的行数@COUNT_OF_LAST_GET
@COUNT
的完整写法@TOTAL
最近一组所有GET
语句获取的数据的总行数@TOTAL_COUNT_OF_RECENT_GET
@TOTAL
的完整写法@BUFFER
使用GET
语句后,缓冲区会保存记录,这个变量可以访问缓冲区,是一个二维数据表格@AFFECTED_ROWS_OF_LAST_PUT
最后一个PUT
语句影响数据库的行数@TOTAL_AFFECTED_ROWS_OF_RECENT_PUT
最近一组所有PUT
语句影响数据库的行数@AFFECTED_ROWS_OF_LAST_PREP
最后一条PREP语句影响数据库的行数
@USERID
登录模式下可以获得用户ID
@USERNAME
登录模式下可以获得用户名@ROLE
登录模式下可以获得用户的角色@USER
登录模式下用户的所有鉴权信息,是一个数据行。也可以通过属性名直接访问,如鉴权信息中包含email
字段,则可以通过@EMAIL
访问这个字段
@COOKIES
可以访问 Cookie,详见OneApi Cookies
@SESSION
可以访问 Session,详见OneApi Session@LANGUAGE
获得当前用户的默认界面语句,适用于多语言环境
@THEME
获取一个随机主题颜色,是一个数据行,包含 3 个颜色字段primary
、lighter
和darker
。
@LOCAL_IP
获取本机的 IP 地址。
@RUNNING_DIR
获取当前 jar 包的保存目录。除了以上全局变量外,PQL 的全局设置的每一项都对应一个全局变量,如 @QROSS_HOME
等,详见 PQL 全局设置。
有时我们需要在不同的 PQL 过程之间使用相同的全局变量,但 PQL 内置的全局变量远远不能满足需求,PQL 提供了自定义全局变量的途径。
以上示例中,全局变量@LAST_UPDATE_TIME
保存最后一次的更新时间,如果这个 PQL 过程每隔一段时间执行,则可以通过这种方式做到增量读取。定义和更新复合类型全局变量时需使用=:
符号赋值或使用 VAR 语句。
用户自定义的全局变量会有归属权问题: 在登录状态下,定义的全局变量归属当前登录用户,即不同的用户可以使用相同名称的全局变量; 在默认状态下,定义的全局变量归属整个系统,任何人都可访问。用户定义的全局变量优先于系统全局变量。管理员可以通过 Master 管理工具查看和新增自定义全局变量。
与用户变量不同,已嵌入到语句中的未声明的全局变量在计算时如找不到定义,将忽略,仅在控制台发出警告提醒。与用户变量的规则一样:如果遇到变量名与语句冲突不能正确识别时,可在变量名两端加上小括号,如@(NOW)
; 如果不希望字符串变量有默认的引号时,可以变量末尾加上叹号,如@NOW!
。
参考链接