Freigeben über


Aufrufen einer Funktion in Oracle-Datenbank mithilfe des WCF-Kanalmodells

In diesem Abschnitt wird veranschaulicht, wie Sie eine Funktion in einer Oracle-Datenbank mithilfe des kanals ausführen, der unter Erstellen eines Kanals mit Oracle Database erstellt wurde.

Ausführen einer Funktion mithilfe des Kanals

Sie können eine Funktion für eine Oracle-Datenbank ausführen, indem Sie eine XML-Nachricht an den Microsoft BizTalk-Adapter für Oracle-Datenbank übergeben. Die Eingabe-XML ähnelt folgendem:

<CREATE_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG" xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/CREATE_ACCOUNT">  
  <REC xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">  
    <ns0:ID>1</ns0:ID>  
    <ns0:NAME>Scott</ns0:NAME>  
    <ns0:BANKNAME>CitiBank</ns0:BANKNAME>  
    <ns0:BRANCH>NY</ns0:BRANCH>  
    <ns0:ENABLED>Y</ns0:ENABLED>  
  </REC>  
</CREATE_ACCOUNT>  

Im folgenden Codeausschnitt wird veranschaulicht, wie eine Funktion in einer Oracle-Datenbank mithilfe eines Kanals ausgeführt wird.

using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Xml;  
  
using System.ServiceModel;  
using System.ServiceModel.Channels;  
  
using Microsoft.ServiceModel.Adapters;  
using Microsoft.Adapters.OracleDB;  
  
namespace OraclePackageChannel  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            // Create Endpoint  
            EndpointAddress address = new EndpointAddress("oracledb:// ADAPTER");  
  
            // Create Binding  
            OracleDBBinding binding = new OracleDBBinding();  
  
            // Create Channel Factory  
            ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, address);  
            factory.Credentials.UserName.UserName = "SCOTT";  
            factory.Credentials.UserName.Password = "TIGER";  
            factory.Open();  
  
            // Create Request Channel  
            IRequestChannel channel = factory.CreateChannel();  
            channel.Open();  
  
            // Send Request  
            System.Xml.XmlReader readerIn = System.Xml.XmlReader.Create("Create_Account.xml");  
  
            Message messageIn = Message.CreateMessage(MessageVersion.Default, "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/CREATE_ACCOUNT", readerIn);  
            Message messageOut = channel.Request(messageIn);  
  
            // Get Response XML  
            XmlReader readerOut = messageOut.GetReaderAtBodyContents();  
  
            // Get Employee ID  
            XmlDocument doc = new XmlDocument();  
            doc.Load(readerOut);  
            doc.Save("d:\\out.xml");  
  
            messageOut.Close();  
            channel.Close();  
        }  
    }  
}  

Weitere Informationen

Entwickeln von Oracle-Datenbankanwendungen mithilfe des WCF-Kanalmodells
Ausführen eines Einfügevorgangs in Oracle-Datenbank mithilfe des WCF-Kanalmodells
Ausführen eines SQLEXECUTE-Vorgangs mithilfe des WCF-Kanalmodells