使用 SQL 适配器对表和视图执行插入、更新、删除和选择操作

适用于 SQL Server 的 Microsoft BizTalk 适配器针对SQL Server数据库中的每个表和视图提供一组标准操作。 通过使用这些操作,可以对目标表或视图执行由 WHERE 子句限定的简单 INSERT、UPDATE、SELECT 和 DELETE 语句。 这些操作也称为数据操作语言 (DML) 操作。

下表显示了 SQL 适配器支持的 DML 操作:

操作 说明
插入 对目标表或视图执行 Insert 操作。

- Insert 操作采用记录数组作为输入。 每条记录都强类型化到目标表,并映射到要插入到表中的行。
- 如果 AllowIdentityInsert 绑定属性的值设置为 TRUE,则可以在标识列中插入值。 有关 AllowIdentityInsert 绑定属性的详细信息,请参阅了解适用于SQL Server适配器绑定属性的 BizTalk 适配器
- Insert 操作的返回值是 Long 数据类型的数组。 此数组存储插入行的标识值(如果有)。 如果表中没有标识列,则返回值为 NULL。

SQL 适配器按以下方式处理插入操作消息中的某些值:

- 为计算列和时间戳列指定的值将被忽略。
- 如果标识列的节点为 null,则忽略该节点。

对于“插入操作”消息中的所有其他值:

- 如果为列指定了值,则在 INSERT 语句中使用该值。
- 如果特定列的节点为 null,则在 INSERT 语句中使用 NULL。 注意: 如果对于特定记录,没有可在 INSERT 语句中使用的值, (即未为任何列指定任何值,或者) 忽略所有列值,则适配器将执行以下 SQL 语句: insert into <table_name> default values
Select 基于记录数组( (列) )和指定 WHERE 子句的查询字符串对目标表或视图执行 SELECT 语句。

- 必须为 SELECT 语句中的列列表指定值。 如果必须在表或视图中检索所有列,则必须在 SELECT 语句中指定 * 。 如果必须检索特定列,则必须用逗号分隔列名,并按表或视图中定义的相同顺序指定列名。
- WHERE 子句必须包含在 SELECT 语句中。 但是,如果不想在 WHERE 子句中指定值,则可以删除元素 Query 或将其留空。
- Select 操作还允许执行更新操作。 在这种情况下,UPDATE 语句放置在 SELECT 语句的 元素内 Query

Select 操作的返回值是强类型结果集,其中包含目标表或视图中的指定列和行。
更新 对目标表或视图执行更新操作。

- Update 操作采用记录对数组作为输入。 每个记录对是两个记录的集合,每条记录都针对目标表进行强类型化。

- 第一条记录对应于需要更新的新值,也就是说,它对应于 UPDATE 语句的 SET 子句。
- 第二条记录对应于行的旧值,即对应于 UPDATE 语句的 WHERE 子句。 注意: 如果对于特定记录对,没有可在 SET 子句中使用的值,则不会为该记录对执行 UPDATE 语句。
- 如果 AllowIdentityInsert 绑定属性的值设置为 TRUE,则可以更新标识列中的值。 有关 AllowIdentityInsert 绑定属性的详细信息,请参阅了解适用于SQL Server适配器绑定属性的 BizTalk 适配器
- Update 操作的返回值为 Int32 数据类型,表示更新的行数。
SQL 适配器按以下方式处理更新操作消息中的某些值:

- 为消息的 SET 子句中的计算列和时间戳列指定的值将被忽略。
- 如果用户定义类型 (UDT) 不是字节排序的,则忽略 WHERE 子句中为 UDT 列指定的值。
- 如果标识列的节点在消息的 SET 子句中为 null,则忽略该节点。
- 如果标识或时间戳列的节点在消息的 WHERE 子句中为 null,则忽略该节点。
- 如果图像、XML、Text 或 Ntext 列的节点在消息的 WHERE 子句中不为 null,则为它们指定的值将被忽略,因为这些值无法进行比较。

对于更新操作消息中的所有其他值:

- 如果为 UPDATE 语句的 SET 子句中的列指定值,则该值在语句的 SET 子句中使用, (set <column_name> = <value>) 。
- 如果 SET 子句中特定列的节点为 null,则 UPDATE 语句 (set <column_name> = null) 使用 NULL。
- 如果为 UPDATE 语句的 WHERE 子句中的列指定值,则该值在语句的 WHERE 子句中使用, (where <column_name> = <value>) 。
- 如果 UPDATE 语句的 WHERE 子句中特定列的节点为 null,则 UPDATE 语句 (where <column_name> is null) 使用 NULL。
删除 基于强类型记录数组对目标表或视图执行 Delete 操作 (列名列表) 目标表和指定 WHERE 子句的筛选器字符串。

Delete 操作的返回值为 Int32 数据类型,表示已删除的行数。

SQL 适配器按以下方式处理 Delete 操作消息中的某些值:

- 如果图像、XML、Text 或 Ntext 列的节点在消息的 WHERE 子句中不为 null,则为它们指定的值将被忽略,因为这些值无法进行比较。
- 如果标识或时间戳列的节点为 null,则忽略它。
- 如果 UDT 不是字节排序的,则忽略 WHERE 子句中为 UDT 列指定的值。

对于“删除”操作消息中的所有其他值:

- 如果为列指定了值,则该值在 DELETE 语句的 WHERE 子句中使用, (where <column_name> = <value>) 。
- 如果特定列的节点为 null,则 DELETE 语句 (where <column_name> is null) 使用 NULL。 注意: 如果对于特定记录,DELETE 语句 (没有值可以使用,也就是说,没有为任何列指定任何值,或者如果) 忽略了所有列值,则适配器不会执行任何 DELETE 语句。

详细信息:

另请参阅

使用适配器连接到 SAP 系统