PQL 中的 SQL 语句

编写 PQL 目的是为了封装整个数据处理过程,让开发人员更专注于业务逻辑,尽可能的少编写与数据处理无关的代码。所以,数据处理过程中的 SQL 语句仍然是 PQL 的核心,而PQL 主要功能是把数据处理中的 SQL 语句组织起来。

上面的示例做的工作如下:

上面示例中,只有OPEN语句、两个GET #和一个PUT #是 PQL 的元素,其他的都是原生 SQL 语句。PQL 就是通过这些附加在 SQL 之上的元素将多个 SQL 语句组织起来。这些元素书写简单,但功能强大。

PQL 对原生的 SQL 语句不做任何解析,会将恢复后(有时会在 SQL 中嵌入一些内容,如变量)提交到对应的数据源执行,再将结果保存输出。在 PQL 中,可以在 SQL 中嵌入的常用元素如下:

详见见附录:完整的嵌入规则表,也会在对应章节进行详细介绍。

在 PQL 中,SQL 语句被分成两类,一类是查询语句,比如SELECTSHOW,执行结果一个二维表格; 另一类是非查询语句,比如INSERTUPDATEDELETE等,执行结果是一个整数,表示数据库受影响的行数。SQL 执行的结果会被保存在全局变量或者缓冲区中,以供再计算或者输出。涉及到的全局变量如下:

其他全局变量见对应章节。

PQL 虽然不对 SQL 语句进行解析,但是会通过 SQL 语句的第一个单词来确定语句的类型,以确定执行什么类型的操作。在某些极个别情况下,PQL 也无法判断 SQL 语句是查询语句还是非查询语句。如 Hive 的 SELECT 查询语句可以以FROM开头,阿里 AnalyticDB 有时以WITH开头(子查询),甚至以 /* .. */开头(用于设置参数)。PQL 提供了一种简单的方法解决问题,就是在语句前加类型前缀,例如:

是什么类型的语句就加什么前缀就好,其中的井号#不能省略。

无论是查询语句还是非查询语句都属于“有返回值的语句”,这类语句有很多其他应用方式,详见PQL中有返回值的语句


参考链接


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