共用方式為


使用 SQL 配接器在資料表和檢視表上插入、更新、刪除和選取作業

Microsoft BizTalk Adapter for SQL Server 會在SQL Server資料庫中的每個資料表和檢視上提供一組標準作業。 您可以使用這些作業,在目標資料表或檢視表上執行 WHERE 子句所限定的簡單 INSERT、UPDATE、SELECT 和 DELETE 子句。 這些作業也稱為資料操作語言 (DML) 作業。

下表顯示 SQL 配接器支援的 DML 作業:

作業 描述
插入 在目標資料表或檢視表上執行 Insert 作業。

- 插入作業會採用記錄陣列做為輸入。 每個記錄都會強型別至目標資料表,並對應至資料表中插入的資料列。
- 您可以在識別欄位中插入值,前提是 AllowIdentityInsert 系結屬性的值設定為 TRUE。 如需AllowIdentityInsert系結屬性的詳細資訊,請參閱閱讀 BizTalk Adapter for SQL Server配接器系結屬性
- Insert 作業的傳回值是 LONG 資料型別的陣列。 此陣列會儲存插入資料列的識別值,如果有的話。 如果資料表中沒有識別欄位,則傳回值為 Null。

SQL 配接器會以下列方式處理插入作業訊息中的某些值:

- 會忽略針對計算資料行和時間戳記資料行指定的值。
- 如果識別欄位的節點為 Null,則會忽略它。

針對插入作業訊息中的所有其他值:

- 如果為數據行指定值,則會在 INSERT 語句中使用該值。
- 如果特定資料行的節點為 Null,則會在 INSERT 語句中使用 Null。 注意: 如果是特定記錄,則 INSERT 語句中沒有任何值可以使用, (亦即,未針對任何資料行指定任何值,或忽略所有資料行值) ,配接器會執行下列 SQL 語句: insert into <table_name> default values
選取 根據記錄陣列,在目標資料表或檢視上執行 SELECT 語句 (資料行) ,以及指定 WHERE 子句的查詢字串。

- 必須針對 SELECT 語句中的資料行清單指定值。 如果必須在資料表或檢視中擷取所有資料行,則必須在 SELECT 語句中指定 * 。 如果必須擷取特定資料行,資料行名稱必須以逗號分隔,並以與資料表或檢視中所定義的順序相同來指定。
- WHERE 子句必須包含在 SELECT 語句中。 不過,如果您不想在 WHERE 子句中指定值,可以刪除 Query 元素或將它保留空白。
- 選取作業也可讓您執行更新作業。 在此情況下,UPDATE 語句會放在 SELECT 語句的 元素內 Query

Select 作業的傳回值是強型別的結果集,其中包含來自目標資料表或檢視的指定資料行和資料列。
更新 在目標資料表或檢視表上執行更新作業。

- 更新作業會採用記錄組陣列做為輸入。 每一筆記錄組都是兩筆記錄的集合,而且每個記錄都是目標資料表的強型別。

- 第一筆記錄對應至需要更新的新值,也就是它對應至 UPDATE 語句的 SET 子句。
- 第二筆記錄會對應至資料列的舊值,也就是說,它會對應至 UPDATE 語句的 WHERE 子句。 注意: 如果是特定記錄組,則 SET 子句中沒有可以使用的值,則不會針對該記錄組執行 UPDATE 語句。
- 您可以更新識別資料行中的值,前提是 AllowIdentityInsert 系結屬性的值設定為 TRUE。 如需AllowIdentityInsert系結屬性的詳細資訊,請參閱閱讀 BizTalk Adapter for SQL Server配接器系結屬性
- Update 作業的傳回值是 Int32 資料類型,表示更新的資料列數目。
SQL 配接器會以下列方式處理更新作業訊息中的某些值:

- 忽略訊息之 SET 子句中針對計算資料行和時間戳記資料行指定的值。
- 如果使用者定義類型 (UDT) 不是位元組排序,則會忽略 WHERE 子句中 UDT 資料行指定的值。
- 如果識別資料行的節點在訊息的 SET 子句中為 Null,則會忽略它。
- 如果在訊息的 WHERE 子句中識別或時間戳記資料行的節點為 null,則會忽略它。
- 如果訊息的 WHERE 子句中影像、XML、Text 或 Ntext 資料行的節點不是 Null,則會忽略為它們指定的值,因為這些值無法進行比較。

針對更新作業訊息中的所有其他值:

- 如果在 UPDATE 語句的 SET 子句中為數據行指定值,則會在語句的 SET 子句中使用值 (set <column_name> = <value>) 。
- 如果 SET 子句中特定資料行的節點為 null,則會在 UPDATE 語句中使用 Null (set <column_name> = null) 。
- 如果為 UPDATE 語句之 WHERE 子句中的資料行指定值,則會在語句的 WHERE 子句中使用值 (where <column_name> = <value>) 。
- 如果 UPDATE 語句的 WHERE 子句中特定資料行的節點為 null,則會在 UPDATE 語句中使用 Null (where <column_name> is null) 。
刪除 根據強型別的記錄陣列,在目標資料表或檢視上執行 Delete 作業, (目標資料表) 的資料行名稱清單,以及指定 WHERE 子句的篩選字串。

Delete 作業的傳回值是 Int32 資料類型,表示已刪除的資料列數目。

SQL 配接器會以下列方式處理 Delete 作業訊息中的某些值:

- 如果訊息的 WHERE 子句中影像、XML、Text 或 Ntext 資料行的節點不是 Null,則會忽略為它們指定的值,因為這些值無法進行比較。
- 如果識別或時間戳記資料行的節點為 Null,則會忽略它。
- 如果 UDT 不是位元組排序,則會忽略 WHERE 子句中為 UDT 資料行指定的值。

針對刪除作業訊息中的所有其他值:

- 如果為數據行指定值,則會在 DELETE 子句的 WHERE 子句中使用值, (where <column_name> = <value>) 。
- 如果特定資料行的節點為 null,則會在 DELETE 子句中使用 Null (where <column_name> is null) 。 注意: 如果特定記錄沒有任何值可用於 DELETE 子句 (也就是說,任何資料行都未指定任何值,或者如果所有資料行值都已忽略) ,配接器就不會執行任何 DELETE 子句。

如需下列詳細資訊︰

另請參閱

使用配接器連線到 SAP 系統