返回首页

gbase数据、南大通用产品文档:GBase8sSQL 通信区域

更新日期:2024年09月11日

数据库服务器始终在一个称为“SQL 通信区域”(SQLCA)的数据结构中返回结果代码,
以及关于操作结果的其他可能信息。如果数据库服务器在用户定义的例程中执行 SQL 语
句,则调用应用程序的 SQLCA 包含在该例程中 SQL 语句触发的值。
在从 表 1 至 表 1 中罗列 SQLCA 的主体字段。在编程语言之中,您用来描述诸如
SQLCA 这样的数据结构的语法,
以及您用来应用其中字段的语法是不同的。
要了解详细信
息,请参阅您的 SQL API 出版物。
特别地,您通过其命名 SQLERRD 和 SQLWARN 数组的一个元素的下标是不同的。在
GBase 8s ESQL/C 中,数组元素从零开始编号,但在其他语言中,从一开始。在本讨论中,
以诸如 third 这样的特定词命名字段,且您必须将这些词翻译成您的编程语言的语法。
您还可使用 GET DIAGNOSTICS 语句的 SQLSTATE 变量来检测、处理和诊断错误。请
参阅 SQLSTATE 值。

要完成 GROUP BY 子句,使用 HAVING 子句来在构成组之后将一个或多个限制条件应
用于这些组。HAVING 子句对组的影响类似于 WHERE 子句限定个别行的方式,使用
HAVING 子句的一个优点是可以在搜索条件中包括聚集,而在 WHERE 子句的搜索条件
中去不能包含聚集。
每个 HAVING 条件将组的一列或一个聚集表达式与组的另一个聚集表达式或与常量作比
较。可以使用 HAVING 来对列值或组列表中的聚集值设置条件。
下列查询返回具有两个商品以上的订单上每个商品的平均总价格。
HAVING 子句在每个组
构成时测试每个组,并选择由两行以上构成的那些组。
图: 查询
SELECT order_num, COUNT(*) number, AVG (total_price) average
FROM items
GROUP BY order_num
HAVING COUNT(*) > 2;
图: 查询结果
order_num number average

1003 3 $319.67
1004 4 $354.00
1005 4 $140.50
1006 5 $89.60
1007 5 $339.20
1013 4 $35.95
1016 4 $163.50
1017 3 $194.67
1018 5 $226.20
1021 4 $403.50
1022 3 $77.33
1023 6 $137.33
如果使用不带 GROUP BY 子句的 HAVING 子句,那么 HAVING 条件应用于满足搜索
条件的所有行。也就是说,满足搜索条件的所有行组成了一个组。
下列查询(图 1的修改版本)只返回一行,即表中所有 total_price 值的平均数,如下所示。

图: 查询
SELECT AVG (total_price) average

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 120 -
FROM items
HAVING count(*) > 2;
图: 查询结果
average

$270.97
如果图 3与图 1一样,在 Projection 子句中包含了非聚集列 order_num ,那么必须将
GROUP BY 子句与组列表中的列包含子啊一起。此外,如果不满足 HAVING 子句中的条
件,那么输出将显示列标题以及一条消息指示没有找到任何行。
下列查询包含可以在 GBase 8s 版本的交互 SQL 中使用的所有 SELECT 语句子句(命名
主变量的 INTO 子句只在 SQL API 中可用)。
图: 查询
SELECT o.order_num, SUM (i.total_price) price,
paid_date - order_date span
FROM orders o, items i
WHERE o.order_date > '01/01/98'
AND o.customer_num > 110
AND o.order_num = i.order_num
GROUP BY 1, 3
HAVING COUNT (*) < 5
ORDER BY 3
INTO TEMP temptab1;
该查询连接 orders 和 items 表;使用显示标号、表列名和用作列指示符的整数;对数据进行
分组和排序;并将结果放置在临时表中,如下所示。
图: 查询结果
order_num price span

1017 $584.00
1016 $654.00
1012 $1040.00
1019 $1499.97 26
1005 $562.00 28
1021 $1614.00 30
1022 $232.00 40
1010 $84.00 66
1009 $450.00 68

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 121 -
1020 $438.00 71

GBA-02DU-0002

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1634
错误码
错误标识
错误信息
GBA-02DU-000
2
ER_EXECUTOR_DE
LETE_UPDATE

错误出现原因
无法得到正确的集群(节点)信息
分析与建议
参考本手册中6.8.1.1 gcware 错误列表章节的内容