共用方式為


使用 WCF 通道模型在 Oracle 資料庫中執行 SQLEXECUTE 作業

本節說明如何透過通道在 Oracle 資料庫上執行 SQLEXECUTE 作業。 您必須在 SOAP 訊息上同時指定訊息和訊息動作。 如需 SQLEXECUTE 作業的詳細資訊,請參閱 使用 WCF 服務模型在 Oracle 資料庫中執行 SQLEXECUTE 作業

SQLEXECUTE 訊息

下列 XML 顯示會傳回 Oracle SEQUENCE 下一個值的 SQLEXECUTE 訊息。

<?xml version="1.0" encoding="utf-8" ?>  
<!-- New Action: http://Microsoft.LobServices.OracleDB/2007/03/SQLEXECUTE -->  
<SQLEXECUTE xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SQLEXECUTE">  
    <SQLSTATEMENT>SELECT tid_seq.nextval id FROM dual</SQLSTATEMENT>  
</SQLEXECUTE>  

SQLEXECUTE 可以指定參數架構專案,以及包含多個參數資料集的參數區塊。 顯示的訊息適用于指定之 SQL 語句的單一調用,因此會從訊息本文省略指定參數架構和參數區塊的專案。 如需 SQLEXECUTE 作業之訊息架構的資訊,請參閱 SQLEXECUTE 作業的訊息架構

指定 SQLEXECUTE 動作

您必須指定訊息的動作。 下列程式碼摘錄顯示如何指定 SQLEXECUTE 訊息的動作。

Message messageIn = Message.CreateMessage(MessageVersion.Default, "http://Microsoft.LobServices.OracleDB/2007/03/SQLEXECUTE", readerIn);  

傳送 SQLEXECUTE 訊息

下列程式碼摘錄示範如何透過通道在 Oracle 資料庫上叫用 SQLEXECUTE 作業。

// 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("SQLExecute.xml");  
  
Message messageIn = Message.CreateMessage(MessageVersion.Default, "http://Microsoft.LobServices.OracleDB/2007/03/SQLEXECUTE", readerIn);  
Message messageOut = channel.Request(messageIn);  
  
// Get Response XML  
XmlReader readerOut = messageOut.GetReaderAtBodyContents();  
  
// Get tid_seq SEQUENCE  
string id = null;  
XmlDocument doc = new XmlDocument();  
doc.Load(readerOut);  
XmlNodeList list = doc.GetElementsByTagName("ColumnValue");  
if (list.Count > 0) id = list[0].InnerXml;  

注意

SQLEXECUTE 作業一律會傳回弱型別的結果集。

另請參閱

使用 WCF 通道模型開發 Oracle 資料庫應用程式
使用 Oracle Database 建立通道