共用方式為


在 Oracle E-Business Suite 中使用 WCF 服務模型執行 ExecuteReader、ExecuteScalar 或 ExecuteNonQuery 作業

Oracle E-Business 配接器會公開泛型作業,例如 ExecuteNonQueryExecuteReaderExecuteScalar。 您可以使用這些作業在 Oracle E-Business Suite 上執行任何語句。 這些作業會根據您針對 語句取得的回應類型而有所不同。 如需配接器如何支援這些作業的詳細資訊,請參閱 ExecuteNonQuery、ExecuteReader 和 ExecuteScalar 作業的支援

本主題示範如何使用 WCF 服務模型,使用 Oracle E-Business 配接 器執行 ExecuteReader 作業。 您可以遵循本主題所述的相同程式集來執行 ExecuteNonQueryExecuteScalar 作業。

關於本主題中使用的範例

本主題中的範例會執行 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 作業

  1. 在 Visual Studio 中建立 Visual C# 專案。 針對本主題,建立主控台應用程式。

  2. 產生 ExecuteReader 泛型作業的 WCF 用戶端類別。 當您使用 [新增配接器服務參考外掛程式] 連線到 Oracle E-Business Suite 時,此作業可在根節點下使用。 如需產生 WCF 用戶端類別的詳細資訊,請參閱 產生 WCF 用戶端或 Oracle E-Business Suite 解決方案成品的 WCF 服務合約

    重要

    產生 WCF 用戶端類別之前,請確定您已將 EnableBizTalkCompatibilityMode 系結屬性設定為 false。

  3. 在方案總管中,新增 和 Microsoft.ServiceModel.ChannelsMicrosoft.Adapters.OracleEBS 參考。

  4. 開啟 Program.cs 檔案,並新增下列命名空間:

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. 在 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 的用戶端系結

  6. 設定用戶端的認證。

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. 因為您在介面資料表上執行作業,所以您必須設定應用程式內容。 在此範例中,若要設定應用程式內容,您可以指定 OracleUserNameOraclePasswordOracleEBSResponsibilityName 系結屬性。 如需應用程式內容的詳細資訊,請參閱 設定應用程式內容

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. 開啟用戶端,如下列程式碼片段所述:

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. 叫用 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();  
    
    
  10. 關閉用戶端,如下列程式碼片段所述:

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  11. 建置專案,然後加以執行。 MS_SAMPLE_EMPLOYEE資料表中的所有記錄都會顯示在主控台上。

另請參閱

使用 WCF 服務模型開發 Oracle E-Business Suite 應用程式