在 Oracle E-Business Suite 中使用 WCF 服務模型執行 ExecuteReader、ExecuteScalar 或 ExecuteNonQuery 作業
Oracle E-Business 配接器會公開泛型作業,例如 ExecuteNonQuery、 ExecuteReader和 ExecuteScalar。 您可以使用這些作業在 Oracle E-Business Suite 上執行任何語句。 這些作業會根據您針對 語句取得的回應類型而有所不同。 如需配接器如何支援這些作業的詳細資訊,請參閱 ExecuteNonQuery、ExecuteReader 和 ExecuteScalar 作業的支援。
本主題示範如何使用 WCF 服務模型,使用 Oracle E-Business 配接 器執行 ExecuteReader 作業。 您可以遵循本主題所述的相同程式集來執行 ExecuteNonQuery 和 ExecuteScalar 作業。
關於本主題中使用的範例
本主題中的範例會執行 ExecuteReader 作業,以在 MS_SAMPLE_EMPLOYEE 介面資料表上執行 SELECT 作業。 資料表是藉由執行範例所提供的腳本來建立。 如需範例的詳細資訊,請參閱 Oracle EBS 配接器的範例。 Oracle E-Business 配接器範例也會提供以本主題為基礎的 ExecuteReader範例。
WCF 用戶端類別
下表列出使用 Oracle E-Business 配接器叫用泛型作業 (ExecuteNonQuery、ExecuteReader 或 ExecuteScalar) 所產生的 WCF 用戶端名稱。
Operations | WCF 用戶端名稱 |
---|---|
ExecuteNonQuery、ExecuteReader 或 ExecuteScalar | GenericOperation_Client |
叫用泛型作業的方法簽章
下表顯示公開以叫用泛型作業之方法的簽章。
作業 | 方法簽章 |
---|---|
ExecuteNonQuery | int ExecuteNonQuery (string Query, string[] OutputRefCursorNames, out System.Data.DataSet[] OutputRefCursors) |
ExecuteReader | System.Data.DataSet ExecuteReader (字串查詢) |
ExecuteScalar | string ExecuteScalar (string Query) |
例如,泛型作業方法的簽章會顯示在下列程式碼片段中。
public partial class GenericOperation_Client : System.ServiceModel.ClientBase<GenericOperation_>, GenericOperation_ {
public int ExecuteNonQuery(string Query, string[] OutputRefCursorNames, out System.Data.DataSet[] OutputRefCursors);
public System.Data.DataSet ExecuteReader(string Query);
public string ExecuteScalar(string Query);
}
在此程式碼片段中,
GenericOperation_Client
是 類別的名稱。 這個類別可用來建立用戶端來叫用泛型作業 ExecuteReader。public System.Data.DataSet ExecuteReader(string Query)
是您在MS_SAMPLE_EMPLOYEE介面資料表上叫用以執行 SELECT 語句的方法。
建立 WCF 用戶端以叫用 ExecuteReader 作業
使用 WCF 用戶端在 Oracle E-Business Suite 上執行作業所需的一般動作集牽涉 到使用 Oracle E-Business Suite 配接器之 WCF 服務模型概觀中所述的一組工作。 本節說明如何建立 WCF 用戶端以叫用 ExecuteReader 作業。
建立 WCF 用戶端以叫用 ExecuteReader 作業
在 Visual Studio 中建立 Visual C# 專案。 針對本主題,建立主控台應用程式。
產生 ExecuteReader 泛型作業的 WCF 用戶端類別。 當您使用 [新增配接器服務參考外掛程式] 連線到 Oracle E-Business Suite 時,此作業可在根節點下使用。 如需產生 WCF 用戶端類別的詳細資訊,請參閱 產生 WCF 用戶端或 Oracle E-Business Suite 解決方案成品的 WCF 服務合約。
重要
產生 WCF 用戶端類別之前,請確定您已將 EnableBizTalkCompatibilityMode 系結屬性設定為 false。
在方案總管中,新增 和
Microsoft.ServiceModel.Channels
的Microsoft.Adapters.OracleEBS
參考。開啟 Program.cs 檔案,並新增下列命名空間:
Microsoft.Adapters.OracleEBS
System.ServiceModel
在 Program.cs 檔案中,建立用戶端,如下列程式碼片段所述。
OracleEBSBinding binding = new OracleEBSBinding(); EndpointAddress address = new EndpointAddress("oracleebs://ebs-72-11"); GenericOperation_Client client = new GenericOperation_Client(binding, address);
在此程式碼片段中,
GenericOperation_Client
是 OracleEBSBindingClient.cs 中定義的 WCF 用戶端。 這個檔案是由新增配接器服務參考外掛程式所產生。注意
在此程式碼片段中,您會在應用程式程式碼中明確指定系結和端點位址。 您可以從應用程式組態檔使用這些值,app.config,也可以由 [新增配接器服務參考外掛程式] 產生。 如需指定用戶端系結之不同方式的詳細資訊,請參閱 設定 Oracle E-Business Suite 的用戶端系結。
設定用戶端的認證。
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";
因為您在介面資料表上執行作業,所以您必須設定應用程式內容。 在此範例中,若要設定應用程式內容,您可以指定 OracleUserName、 OraclePassword和 OracleEBSResponsibilityName 系結屬性。 如需應用程式內容的詳細資訊,請參閱 設定應用程式內容。
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";
開啟用戶端,如下列程式碼片段所述:
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }
叫用 ExecuteReader 作業,以在 MS_SAMPLE_EMPLOYEE資料表上執行 SELECT 作業。 叫用 ExecuteReader 作業之前,您必須將
System.Data
命名空間新增至程式碼。string query = "SELECT * FROM MS_SAMPLE_EMPLOYEE"; DataSet ds = client.ExecuteReader(query); Console.WriteLine("Invoking the SELECT statement using ExecuteReader"); Console.WriteLine("*****************************************************"); foreach (DataTable tab in ds.Tables) { foreach (DataRow row in tab.Rows) { Console.WriteLine("The details of the employee are: "); for (int i = 0; i < tab.Columns.Count; i++) { Console.WriteLine(row[i]); } Console.WriteLine(); } } Console.WriteLine("*****************************************************"); Console.ReadLine();
關閉用戶端,如下列程式碼片段所述:
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();
建置專案,然後加以執行。 MS_SAMPLE_EMPLOYEE資料表中的所有記錄都會顯示在主控台上。