GBASE南大通用技术分享:GBase 8s数据库SELECT 语句之GROUP BY和INTO子句简介

25 阅读2分钟

南大通用GBase 8s数据库可为 Projection 子句的选择列表中的任何列声明别名。GROUP BY 子句可通过列的别名引用它。仅在 SELECT 语句正在执行时,此临时名称才有效。

如果您的别名是 SELECT 语句的 SQL 关键字,则请使用 AS column_alias 关键字来阐明语法。例如,要使用 FROM 作为表别名,必须在该别名前紧接着 AS 关键字,来避免语法错误。下列语句使用带有以 from 的 AS 作为别名:

SELECT status AS from FROM stock GROUP BY from;

下列等同的查询声明 pcol 作为别名,并在 GROUP BY 子句中使用那个别名:

SELECT pseudo_corinthian AS pcol FROM architecture GROUP BY pcol;

SELECT pseudo_corinthian pcol FROM architecture GROUP BY pcol;

INTO 子句

在 SPL 例程或 GBase 8s ESQL/C 程序中使用 INTO 子句来指定程序变量或主变量来接收SELECT 检索的数据。

INTO 子句指定一个或多个接收查询返回的值的变量。如果它返回多个值,则以您指定这些变量的顺序将它们赋予变量列表。

如果 SELECT 语句是孤立的(即,不是 DECLARE 语句的一部分,且不使用 INTO 子句),则必须为单 SELECT 语句。单 SELECT 语句仅返回一行。

接收的变量的数目必须等于 Projection 子句的选择列表中项的数目。每一接收的变量的数据类型应与选择列表中相应的列或表达式的数据类型相兼容。

当接收的变量的数据类型与被选择的项不相匹配时,要了解数据库服务器采取的活动,请参阅ESQL/C 中的警告。

下列示例展示 GBase 8s ESQL/C 中的单 SELECT 语句:

EXEC SQL select fname, lname, company

into :p_fname, :p_lname, :p_coname

from customer where customer_num = 101;

在 SPL 例程中,如果 SELECT 返回多于一行,则您必须使用 FOREACH 语句来分别地访问这些行。SELECT 语句的 INTO 子句持有获取的值。要获取更多信息,请参阅 FOREACH。