Richiamare una funzione nel database Oracle usando il modello di canale WCF
In questa sezione viene illustrato come eseguire una funzione in un database Oracle usando il canale creato in Creare un canale usando Oracle Database.
Esecuzione di una funzione tramite il canale
È possibile eseguire una funzione in un database Oracle passando un messaggio XML a Microsoft BizTalk Adapter for Oracle Database. Il codice XML di input è simile al seguente:
<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>
L'estratto del codice seguente illustra come eseguire una funzione in un database Oracle usando un canale.
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();
}
}
}
Vedere anche
Sviluppare applicazioni di database Oracle usando il modello di canale WCF
Eseguire un'operazione di inserimento nel database Oracle usando il modello di canale WCF
Eseguire un'operazione SQLEXECUTE usando il modello di canale WCF