INSERT 语句

INSERT 语句在数据库表中插入一行。

语法

在表中插入的一行由 TableReference 标识。ColumnName 列表标识目标表中将被赋予特定值的那些列。这些值由 VALUES 子句中的表达式确定(第一个表达式为第一个指定列赋值,依此类推)。VALUES 子句中表达式的数量必须与指定列的数量相同。存在于表中但未在列表中提到的所有列都被赋予其缺省值。

Table 引用

表引用是用于引用消息树的字段引用的特殊情况。它始终以单词“Database”开始,并可以包含以下任何内容:
  • 仅表名称
  • 模式名称和表名
  • 数据源名称(即,数据库实例的名称)、模式名称和表名
在每种情况中,可以直接指定名称,或通过括在花括号({...})中的表达式进行指定。直接指定的数据源、模式或表的名称遵守名称替代。即,所用名称如果已声明为已知名称,则会使用已声明名称的值而不是名称本身(请参阅DECLARE 语句)。

如果未指定模式名称,则使用代理的数据库用户的缺省模式。

如果未指定数据源名称,则使用节点的 data source 属性指向的数据库。

处理错误

插入操作过程中有可能会发生错误。例如,数据库可能不可操作,或者表上可能定义了新行将违例的约束。在这些情况下,除非节点将其数据库发生错误时抛出异常属性设置为 FALSE,否则将抛出异常。这些异常设置相应的 SQL 代码、状态、本机错误和错误文本值,并且可以由错误处理程序来处理(请参阅 DECLARE HANDLER 语句)。

有关处理数据库错误的更多信息,请参阅捕获数据库状态

示例

以下示例假设已配置了 Database 节点的 dataSource 属性,且其标识的数据库有 TABLE1 表(其中有列 A、B 和 C)。

给定有以下一般 XML 主体的消息:
<A>
 <B>1</B>
 <C>2</C>
 <D>3</D>
</A>
以下 INSERT 语句在表中插入一个新行,列 A、B 和 C 的值分别为 1、2 和 3。
INSERT INTO Database.TABLE1(A, B, C) VALUES (Body.A.B, Body.A.C, Body.A.D);
下一个示例显示使用计算数据源、模式和表名称:
-- Declare variables to hold the data source, schema, and table names
-- and set their default values
DECLARE Source CHARACTER 'Production';
DECLARE Schema CHARACTER 'db2admin';
DECLARE Table CHARACTER 'DynamicTable1';

-- Code which calculates their actual values comes here

-- Insert the data into the tabl
INSERT INTO Database.{Source}.{Schema}.{Table} (Name, Value) values ('Joe', 12.34);
相关概念
ESQL 概述
相关任务
正在开发 ESQL
捕获数据库状态
相关参考
语法图:可用类型
ESQL 语句
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak05050_