INTO STANDARD 和 INTO RAW 子句

您可使用 INTO STANDARD 和 INTO RAW 子句来创建一个新的存储 SELECT 语句的结果集的永久表。

此语法提供单一机制来指定查询,来接收符合条件的记录,并将那些查询结果插入到永久的数据库表内。

INTO STANDARD 和 INTO RAW 子句

元素 描述 限制 语法
table 为结果表在此声明的名称 在本地数据库中必须尚未存在 标识符

当使用 SELECT INTO 来创建新的永久表时,您可指定它的类型为 STANDARD 或 RAW。缺省的类型是 STANDARD。您可可选地指定新表的存储位置、extent 大小和锁模式选项。

新的永久表的列名称是在 Projection 子句的选择列表中指定的那些名称。如果星号(*)作为 Projection 子句的选择列表出现,则该星号扩展到 SELECT 语句的 FROM 子句中相应的表或视图的所有列名称。任何影子列都不会通过星号规范来扩展。

下列示例创建新的名为 ptabl 的 raw 表来存储连接查询的结果:

SELECT t1col1, t1col2, t2col1 
        FROM tab1, tab2 
        WHERE t1col1 < 100 and t2col1 > 5 
        INTO RAW ptab1;

在上例中,新的 ptabl 表可能包含列 t1col1t1col2t2col1

除了简单的列表达式之外的所有表达式都必须有一个定义在 Projection 子句中的显示标签。此显示标签被用作新表中的列的名称。如果简单的(或平凡的)列表达式没有显示标签,则该表使用列名称。如果在选择列表中有重复的显示标签或列名称,则返回错误。

下一示例失败并返回错误 -249,因为它没有为 col1+5 表达式声明显示标签:

SELECT col1+5, col2
        FROM tab1
        INTO ptab1;    

下列修订的查询避免在前一示例中的 -249 错误:

SELECT col1+5 pcol1, col2
        FROM tab1
        INTO ptab1; 

上述修正的示例创建标准 ptabl 表来在它的列 pcol1col2 中存储查询结果。

对结果表的限制

与大部分 DDL 语句一样,使用完全符合条件的表名称在另一数据库中创建新的结果表的尝试失败并返回语法错误。

要以与同一数据库中现有的表相同的名称创建结果表,也会发生类似的错误。

SELECT INTO . . . TABLE 语句不可被用作子查询的一部分。

然而,您可使用不是 SELECT 子句的 projection 列表的一部分的列作为 ORDER BY 子句中的排序键。

要获取对于可类似地创建查询结果表并通过插入符合条件的行来填充那表的 CREATE TABLE 语句语法的描述,请参阅 AS SELECT 子句

1 请参阅 存储选项
2 请参阅 LOCK MODE 选项