在表和视图中进行插入、更新、删除和选择操作的消息架构
适用于SQL Server的 Microsoft BizTalk 适配器针对SQL Server数据库中每个表和视图执行插入、更新、删除和选择操作。 这些操作执行由 WHERE 子句限定的相应 SQL 语句。 SQL 适配器在这些操作中使用强类型记录和记录集。
表操作的消息结构
下表显示了 SQL 适配器对数据库表公开的基本表操作SQL Server XML 消息结构。 操作的目标表在消息操作中指定,并且也显示在目标命名空间中。
操作 | XML 消息 | 说明 | 适配器执行的 SQL |
---|---|---|---|
插入 | <Insert xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <Rows> <[TABLE_NAME]> <[FIELD1_NAME]>value1</[FIELD1_NAME]> <[FIELD2_NAME]>value2</[FIELD2_NAME]> … </[TABLE_NAME]> </Rows> </Insert> |
将提供的强类型数据的记录集插入目标表中。 | INSERT INTO TABLE_NAME (FIELD1_NAME, FIELD2_NAME, …) VALUES (value1, value2, …); |
插入响应 | <InsertResponse xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <InsertResult> <long>[Value]</long> </InsertResult> </InsertResponse> |
“插入响应”消息包含 Long 数据类型的数组。 数组存储插入行的标识值(如果有)。 如果表中没有标识列,则返回值为 NULL。 | -- |
Select | 选择所有记录:<Select xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <Columns>*</COLUMNS> <Query></Query> </Select> 在一组记录中选择特定列: <Select xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <Columns>[COLUMN_list]</COLUMNS> <Query>where [WHERE_clause]</Query> </Select> 更新记录作为选择操作的一部分: <Select xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <Columns>[COLUMN_list]</Columns> <Query>where [WHERE_clause];UPDATE [TABLE_NAME] SET [FIELD1_NAME] = [value1] where [WHERE_clause]</Query> </Select> |
使用 元素中指定的 WHERE 子句对目标表执行 SELECT 查询。 结果集在 Columns 元素中指定的列名的逗号分隔列表中包含列<>。 必须在 Columns> 元素中<提供值。 如果必须在表或视图中检索所有列,则必须在 Columns> 元素中<指定 *。 如果必须检索特定列,则必须用逗号分隔列名,并按在表或视图中定义的相同顺序进行指定。 必须在 SELECT 语句中包含 WHERE 子句。 如果不想指定 WHERE 子句,可以删除 <Query> 元素或将其留空。 可以使用“选择”操作更新记录。 UPDATE 语句放置在 SELECT 请求 XML 的 Query> 元素中<,用分号与 WHERE 子句分隔。 请注意,UPDATE 语句不对 SELECT 语句的结果集进行操作。 |
选择所有记录:SELECT * FROM [TABLE_NAME] WHERE [WHERE_clause]; 在一组记录中选择特定列: SELECT [COLUMN_list] FROM [TABLE_NAME] WHERE [WHERE_clause]; 更新记录作为选择操作的一部分: SELECT [COLUMN_list] FROM [TABLE_NAME] WHERE [WHERE_clause]; UPDATE [TABLE_NAME] SET [FIELD1_NAME] = value1 [WHERE_clause]; |
选择“响应” | <SelectResponse xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <SelectResult> <[TABLE_NAME]> <[FIELD1_NAME]>[value1]</[FIELD1_NAME]> <[FIELD2_NAME]>[value2]</[FIELD2_NAME]> … </[TABLE_NAME]> </SelectResult> <SelectResponse> |
SELECT 查询生成的强类型结果集。 | -- |
更新 | <SelectResponse xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <SelectResult> <[TABLE_NAME]> <[FIELD1_NAME]>[value1]</[FIELD1_NAME]> <[FIELD2_NAME]>[value2]</[FIELD2_NAME]> … </[TABLE_NAME]> </SelectResult> </SelectResponse> <Update xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <Rows> <RowPair> <After> <[FIELD1_NAME]>[value1]</[FIELD1_NAME]> <[FIELD2_NAME]>[value2]</[FIELD2_NAME]> … </After> <Before> <[FIELD1_NAME]>[value3]</[FIELD1_NAME]> <[FIELD2_NAME]>[value4]</[FIELD2_NAME]> … </Before> </RowPair> </Rows> </Update> |
将记录对数组作为输入。 每个记录对都是两个强类型记录的集合: 元素) 中的 <After> 第一条记录 (对应于需要更新的新值。) 中的 <Before> 第二条记录 (对应于行的旧值。 |
UPDATE [TABLE_NAME] SET [FIELD1_NAME] = value1, [FIELD2_NAME] = value2, … WHERE [FIELD1_NAME] = value3, [FIELD2_NAME] = value4, …; |
更新响应 | <UpdateResponse xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <UpdateResult>[rows updated]</UpdateResult> </UpdateResponse> |
更新的行数在 UpdateResult 元素中返回。 | -- |
删除 | <Delete xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <Rows> <[TABLE_NAME]> <[FIELD1_NAME]>value1</[FIELD1_NAME]> <[FIELD2_NAME]>value2</[FIELD2_NAME]> … </[TABLE_NAME]> </Rows> </Delete> |
-- | DELETE FROM [TABLE_NAME] WHERE [FIELD1_NAME] = value1, [FIELD2_NAME] = value2, …; |
删除响应 | <DeleteResponse xmlns="[VERSION]/TableOp/[SCHEMA]/[TABLE_NAME]"> <DeleteResult>[rows deleted]</DeleteResult> </DeleteResponse> |
DeleteResult 元素中返回已删除的行数。 | -- |
[VERSION] = 消息版本字符串;例如 。 http://schemas.microsoft.com/Sql/2008/05
[SCHEMA] = SQL Server项目的集合;例如,dbo。
[TABLE_NAME] = 表的名称;例如,Employee。
[FIELD1_NAME] = 表字段名称;例如,NAME。
[COLUMN_list] = 逗号分隔的列列表;例如,名称、年龄、指定。
[SELECT_query] = 在大容量插入操作的 QUERY 元素中指定的 SQL SELECT 语句;例如,“SELECT * from MyTable”
[WHERE_clause] = 用于操作的 SELECT 语句的WHERE_clause;例如,ID > 10。
重要
视图上的基本表操作的消息结构与表上的消息结构相同,只是视图替换了表: Insert xmlns="[VERSION]/ViewOp/[SCHEMA]/[VIEW_NAME]"
。
基本表操作的消息操作
下表显示了 SQL 适配器用于表上的基本表操作的消息操作。 SQL 适配器使用消息操作中指定的表名称来确定操作的目标表。
操作 | 消息操作 | 示例 |
---|---|---|
插入 | TableOp/Insert/[SCHEMA]/[TABLE_NAME] | TableOp/Insert/dbo/Employee |
插入响应 | TableOp/Insert/[SCHEMA]/[TABLE_NAME]/response | TableOp/Insert/dbo/Employee/response |
Select | TableOp/Select/[SCHEMA]/[TABLE_NAME] | TableOp/Select/dbo/Employee |
选择“响应” | TableOp/Select/[SCHEMA]/[TABLE_NAME]/response | TableOp/Select/dbo/Employee/response |
更新 | TableOp/Update/[SCHEMA]/[TABLE_NAME] | TableOp/Update/dbo/Employee |
更新响应 | TableOp/Update/[SCHEMA]/[TABLE_NAME]/response | TableOp/Update/dbo/Employee/response |
删除 | TableOp/Delete/[SCHEMA]/[TABLE_NAME] | TableOp/Delete/dbo/Employee |
删除响应 | TableOp/Delete/[SCHEMA]/[TABLE_NAME]/response | TableOp/Delete/dbo/Employee/response |
[SCHEMA] = SQL Server项目的集合;例如,dbo。
[TABLE_NAME] = 表的名称;例如,Employee。
重要
视图上的操作的消息操作与表的消息操作相同,只是“ViewOp”替换了“TableOp”;例如 。 ViewOp``/Insert/dbo/Employee_View