PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
和任何数据库的 SQL 语言一样,PQL 支持系统函数,可以像使用变量一样嵌入到语句的任何地方。所以 PQL 不仅可以通过 Sharp 表达式操作数值,还可以使用函数。
上例效果与下列 Sharp 表达式操作效果相同。
与全局变量一样,系统函数使用@
开头。虽然大多数情况下功能与 Sharp表达式相同,但 PQL 仍建议使用 Sharp 表达式作为处理数据的手段。一个原因是避免混乱,因为所有原生的 SQL 都支持函数,而且名称有的会与 PQL 函数相同,区别只是差别一个@
号;二是为了避免逻辑不清,各数据库的原生函数作用于每行数据,而 PQL 函数只作用于单值。
函数与其他嵌入式操作的优先级顺序为:用户变量 优先于 系统变量 优先于 自定义或全局函数 优先于 Sharp 表达式,所以可以在函数中把变量当作函数的参数,也可以在 Sharp 表达式运算过程中使用函数。
为了照顾不同的数据库 SQL 语言习惯,PQL 中会有不同的函数名称来完成同一个操作。
除些之外还有一个判断函数@IFNULL(value, other)
或@NVL(value, other)
,当指定值value
为null
时,则返回另一个值other
。
可以定义自己的系统函数,可以作用于整个系统,可以在任何 PQL 中使用。只能使用 Master 管理工具在系统设置的系统函数中定义。另外一种方式是使用下面的语句定义系统函数,但如果没有 Qross 系统支持,则其作用基本与用户函数相同,在运行 PQL 的程序退出时即失效。(会在未来版本中支持)
自定义系统函数的结构与用户函数相同,只是前缀符号由$
改为@
,与用户变量与全局变量的逻辑相同。自定义系统函数在调用时也加@
前缀符号,与系统函数相同。自定义系统函数主要分为三部分:
@
开始,由英文字母、数字和下划线_
组成,名称建议全部大写,单词之间使用_
隔开。函数名称在整个系统中唯一,自定义函数不能与系统原有函数名冲突。$
开始,名称一般为全部小写,单词之间使用_
隔开。使用DEFAULT
关键词设定默认值。即除了名称以@
开头以外,其他逻辑都与用户函数相同。
对于返回值的系统函数,可以嵌入到其他语句中使用,就像全局变量一样。
对于没有返回值但是实现业务逻辑的系统函数,可以使用 CALL 语句调用。
为了表达更清晰,对于无参系统函数,可以省略小括号,例如@KEEPER_IS_RUNNING
。更多信息可参考 CALL 语句。
PQL 提供了 用户函数、系统函数 和 自定义系统函数 三种概念,不同类型的函数之间具有一定的差异,现分别说明如下:
在 Qross 系统中,任何用户都可以定义系统函数,但是只有系统管理员可以在系统设置中定义适用于所有用户的系统函数,所有用户在 Qross 系统“数据”模块定义的系统函数只有本人可以在自己编写的 PQL 中使用。在数据权限不敏感的情况下,建议由系统管理员定义系统函数。如果个人系统函数和全局系统函数名称相同,则优先调用个人系统函数。
参考链接