南大通用GBase8s 常用SQL语句(227)

INTO table 子句
使用 INTO Table 子句来创建新的临时的、永久的或外部的表来接收 SELECT 语句检索的数据。
INTO table
在这里插入图片描述

元素 描述 限制 语法
table 要接收查询结果的表在此声明的名称 在当前数据库中您拥有的表、视图、同义词和序列对象之中,必须是唯一的 标识符
您必须对要在其上创建临时的、永久的或外部表的数据库有 Connect 权限。在其他用户会话中的临时表的标识符之中,临时表的名称无需是唯一的。
在 Projection 子句中,必须指定在永久的、临时的或外部表中的列名称,在此,您必须为不是简单的列表达式的所有表达式提供显示标签。该显示标签成为在永久的、临时的或外部表中的列名称。如果您没有为简单的列表达式声明显示标签,则产生的新表使用 Projection 子句的选择列表中的列名称。
下列 INTO TEMP 示例创建 pushdate 表,带有两个列 customer_num 和 slowdate:
SELECT customer_num, call_dtime + 5 UNITS DAY slowdate
FROM cust_calls INTO TEMP pushdate;
下列 INTO STANDARD 示例创建 stab1 表,带有两列 fcol1 和 col2:
SELECT col1::FLOAT fcol1, col2
FROM tab1 INTO STANDARD stab1;
在此,col1 是该查询从其检索数据的 tab1 表中的 INTEGER 列,但 fcol1 值在产生的 stab1 表中被强制转型为 FLOAT。省略 STANDARD 关键字的查询会创建相同的结果表,因为 STANDARD 是缺省的表类型。
当没有返回行时的结果
当您使用与 WHERE 子句组合的 INTO Table 子句时,且没有返回行,则 SQLNOTFOUND 值在符合 ANSI 的数据库中是 100,在不符合 ANSI 的数据库中是 0。如果 SELECT INTO TEMP…WHERE… 语句是多语句 PREPARE 的一部分,且没有返回行,则对于符合 ANSI 的数据库和不符合 ANSI 的数据库,SQLNOTFOUND 值都是 100。
此 GBase 8s 版本在遇到 SQLNOTFOUND 值 100 之后,继续处理多语句准备好的对象的剩余的语句。然而,您可维持传统的行为,通过将 IFX_MULTIPREPSTMT 环境变量设置为 1,不执行剩余的准备好的语句。
对 ESQL/C 中的 INTO table 子句的限制
在 GBase 8s ESQL/C 中,请不要在同一查询中同时使用 INTO table 子句与 INTO variable 子句。如果您同时使用,则不会向程序变量返回结果,且将 SQLCODE 变量设置为负值。要获取更多关于 INTO variable 子句的信息,请参阅 INTO 子句。
INTO TEMP 子句
INTO TEMP 子句创建临时表来保存查询结果。
INTO TEMP 子句

INTO TEMP 子句创建的临时表的缺省的初始的 extent 和下一 extent 为每个 8 页。通过数据库服务器的内建的 RSAM 访问方式,该临时表必须是可访问的;您不可指定另一访问方式。
如果您使用同一查询结果一次以上,则使用临时表可节省时间。此外,使用 INTO TEMP 子句常常可以使 SELECT 语句更清晰和易于理解。
临时表中的数据值是静态的;当我们用来构建临时表的表发生更改时,临时表中的数据并不更新。您可使用 CREATE INDEX 语句来在临时表上创建索引。
日志记录的临时表一直存在,直到发生下列事件之一为止:
应用程序从数据库断开连接。
在临时表上发出 DROP TABLE 语句。
数据库关闭。
无日志记录的临时表存在,直到发生下列事件之一为止:
应用程序从数据库断开连接。
在临时表上发出 DROP TABLE 语句。
如果您的 GBase 8s 数据库没有事务日志记录,则临时表采取的行为与以 WITH NO LOG 选项创建的表的行为相同。
如果您在 DBSPACETEMP 环境变量中指定多个临时 dbspace(或如果未设置,在 DBSPACETEMP 配置参数中), 则 INTO TEMP 子句将查询的结果集的行以轮询方式加载到这些 dbspace 内。要获取更多关于带有 INTO TEMP 子句的查询创建的临时表的存储位置的信息,请参阅 临时表的存储位置。
由于在无日志记录的临时表上的操作不做日志记录,所以使用 WITH NO LOG 选项会减轻事务日志记录的负荷。
由于当数据库被关闭时无日志记录的临时表不消失,所以您可使用无日志记录的临时表来在应用程序保持连接时将数据从一个数据库转移到另一个。您以 INTO TEMP 子句的 WITH NO LOG 选项创建的临时表的行为与 RAW 表的行为相似。
要获取更多关于临时表的信息,请参阅 CREATE TEMP TABLE 语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值