Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'adapter BizTalk Microsoft per Oracle Database presenta un set standard di operazioni sugli artefatti del database Oracle. Usando queste operazioni, è possibile eseguire operazioni come chiamare una funzione o una routine Oracle o eseguire operazioni DML (Data Manipulation Language) SQL di base nelle tabelle. Tuttavia, potrebbero esserci scenari basati sulla logica di business che richiedono l'esecuzione di operazioni che l'adattatore di database Oracle non esegua. Ad esempio, è possibile:
Eseguire un'operazione sugli oggetti del database che non vengono visualizzati dall'adattatore Oracle Database; ad esempio, ottenere il CURVAL o NEXTVAL di una Sequenza Oracle.
Eseguire operazioni del linguaggio di definizione dei dati; Ad esempio, creare una tabella.
Eseguire operazioni su un artefatto di database non presente in fase di progettazione; Ad esempio, aggiornare i record in una tabella temporanea creata dalla logica di business.
Eseguire operazioni DML più complesse sulle tabelle rispetto alle operazioni visualizzate dall'adattatore Oracle Database; Ad esempio, per eseguire una query che include una clausola JOIN.
Per questi tipi di scenari, l'adapter di database Oracle espone l'operazione SQLEXECUTE. Usando l'operazione SQLEXECUTE, è possibile eseguire un'istruzione SQL con parametri nel database Oracle. L'operazione SQLEXECUTE supporta un blocco di parametri di input costituito da set di parametri che consentono di eseguire la stessa istruzione SQL una volta per ogni set. L'operazione SQLEXECUTE restituisce i risultati dell'istruzione SQL in un set di record generico.
Informazioni sugli esempi usati in questo argomento
Negli esempi di questo argomento viene usata una sequenza Oracle denominata TID_SEQ. Uno script per generare questa sequenza viene fornito con gli esempi dell'SDK. Per altre informazioni sugli esempi dell'SDK, vedere Esempi nell'SDK.
Classe WCF client
Il modello di servizio WCF genera un client WCF dedicato, SQLEXECUTEClient, per l'operazione SQLEXECUTE. Il codice seguente illustra SQLEXECUTEClient e la firma del metodo chiamato per richiamare l'operazione SQLEXECUTE.
public partial class SQLEXECUTEClient : System.ServiceModel.ClientBase<SQLEXECUTE>, SQLEXECUTE {
...
public microsoft.lobservices.oracledb._2007._03.GenRecordRow[] SQLEXECUTE(string SQLSTATEMENT, string PARAMETERSCHEMA, microsoft.lobservices.oracledb._2007._03.PARAMETERDATA[] PARAMETERSET);
}
L'operazione SQLEXECUTE restituisce un set di record generico. Questo set di record contiene i valori (se presenti) restituiti dalle istruzioni eseguite dall'operazione SQLEXECUTE. È possibile passare set di parametri di input all'operazione SQLEXECUTE in una raccolta di oggetti PARAMETERDATA, ognuno dei quali contiene una raccolta di parametri di input rappresentati come stringhe. Il codice seguente illustra la definizione di un set PARAMETERDATA.
namespace microsoft.lobservices.oracledb._2007._03 {
using System.Runtime.Serialization;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute()]
public partial class PARAMETERDATA : object, System.Runtime.Serialization.IExtensibleDataObject {
...
private string[] PARAMETERField;
...
[System.Runtime.Serialization.DataMemberAttribute()]
public string[] PARAMETER {
get {
return this.PARAMETERField;
}
set {
this.PARAMETERField = value;
}
}
}
}
Chiamata dell'operazione SQLEXECUTE
Per richiamare l'operazione SQLEXECUTE usando un client WCF, seguire questa procedura.
Generare una classe SQLEXECUTEClient per la tabella o la vista di destinazione.
Importante
L'operazione SQLEXECUTE viene mostrata sotto il nodo radice (/) nel riquadro Selezionare una categoria nella finestra di dialogo Aggiungi riferimento al servizio adattatore.
Creare un'istanza della classe SQLEXECUTEClient e richiamare il metodo SQLEXECUTE per eseguire istruzioni SQL nel database Oracle.
Per informazioni più dettagliate su come creare una classe client WCF e richiamare operazioni sull'adapter Oracle Database, vedere Panoramica del modello di servizio WCF con l'adapter Oracle Database.
Nell'esempio seguente viene usato SQLEXECUTEClient per ottenere il valore successivo di oracle SEQUENCE, TID_SEQ, eseguendo l'istruzione SQL seguente:
SELECT tid_seq.nextval id from DUAL. L'output viene quindi scritto nella console.
using (SQLEXECUTEClient sqlClient = new SQLEXECUTEClient("OracleDBBinding_SQLEXECUTE"))
{
sqlClient.ClientCredentials.UserName.UserName = "SCOTT";
sqlClient.ClientCredentials.UserName.Password = "TIGER";
try
{
sqlClient.Open();
}
catch (Exception ex)
{
Console.WriteLine("Error opening SQL client " + ex.Message);
throw;
}
microsoft.lobservices.oracledb._2007._03.GenRecordRow[] sequenceRec =
new microsoft.lobservices.oracledb._2007._03.GenRecordRow[0];
try
{
sequenceRec = sqlClient.SQLEXECUTE("SELECT tid_seq.nextval id from DUAL", null, null);
}
catch (Exception ex)
{
Console.WriteLine("Error executing SQL client " + ex.Message);
throw;
}
if (sequenceRec.Length > 0)
{
Console.WriteLine("TID_SEQUENCE value is {0}", sequenceRec[0].GenRecordColumn[0].ColumnValue);
}
else
{
Console.WriteLine("Couldn't get next TID_SEQUENCE value");
}
}
Vedere anche
Sviluppare applicazioni Oracle Database usando il modello di servizio WCF