PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
与其他语言不同,PQL 中的变量除了可以进行运算之外,还可以和 SQL 语句写在一起,作为其他语句的一部分,解释器会在执行时替换成其对应的值并自动判断数据类型。
用户变量必须以美元$
字符开头,变量名称只能由字母、数字和下划线组成。变量名不区分大小写($user
和$User
是同一个变量),但仍建议英文字母建议全部小写,多个英文单词之间使用下划线_
隔开。 声明变量不需要也不能指定类型,解释器会自动推断。PQL 中没有“不可变常量”的概念,所有变量的值均可更新。
变量除了可以嵌入到语句中之外,也可以进行各种运算。
变量有自己的作用域和生命周期。如下示例:
上面例子中:变量$d
的作用域为整个 PQL 过程; 变量$i
和变量$x
的作用域在FOR
循环中; 变量$y
的作用域仅在IF
语句块内,更确切点是在THEN
和ELSE
之间; 变量$z
的作用域在ELSE
和END IF
中间。同样的,函数参数和在函数体内声明的变量作用域也仅在函数内。
用户变量的作用域最大范围是整个 PQL 过程,如果想使用跨脚本的变量,请参照全局变量。
PQL 使用几个关键词来表示变量的状态,可用于条件判断,使用时不区分大小写。
UNDEFINED
表示变量未声明,或不在作用域内,一般用于判断。
已嵌入到语句中的未声明的变量在计算时将恢复为UNDEFINED
。
NULL
表示变量已声明未赋值,也可以给变量直接赋值NULL
,但一般不会这么做。
EMPTY
表示变量是否为空,比如字符串是否为空、集合变量是否为空等。 数据表为空表示数据表中没有任何数据行。数据类型的判断见条件表达式
变量可以嵌入到语句当中,如本页第一个例子,解释器会自动判断类型。如果碰到变量名与语句冲突不能正确识别时,可以在变量名上加上小括号; 如果是字符串变量,在解析时会自动添加引号,如果不想让解释器自动添加引号,可以变量末尾加叹号!
。
上例中,如果变量$group
引用时不加小括号,就会识别为$group_scores
; 如果变量$table
在引用时不加叹号,则会把语句解析为SELECT * FROM 'students_scores' WHERE score>=60
,执行时会出现语法错误。如果嵌入到语句中的变量未声明或书写错误,会被恢复为UNDEFINED
,很可能会造成语句出错。
参考链接