Condividi tramite


Richiamare funzioni e routine con REF CURSORS in Oracle Database usando BizTalk Server

Ref CURSOR è un tipo di dati PL/SQL che rappresenta un puntatore a un set di risultati lato server generato eseguendo una query. Un tipo REF CURSOR consente lo streaming di dati di input e output ed è ideale per il trasferimento di grandi quantità di dati da e verso un codice PL/SQL. L'adattatore Oracle Database offre il supporto per curSOR REF fortemente tipizzato e debolmente tipizzato (SYS_REFCURSOR) che possono essere passati a routine PL/SQL e funzioni come parametri IN, OUT o IN OUT. Per altre informazioni sul modo in cui l'adattatore Di database Oracle supporta REF CURSOR, vedere Operazioni su funzioni e procedure con parametri REF CURSOR. Per informazioni sulla struttura XML per REF CURSORS, vedere Message Schemas for REF CURSORS.For information the XML structure for REF CURSORS, see Message Schemas for REF CURSORS.

Come richiamare funzioni in un database Oracle?

L'esecuzione di un'operazione su un database Oracle tramite l'adapter Oracle Database con BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per sviluppare applicazioni BizTalk con Oracle Database. Per richiamare una funzione in un database Oracle che accetta REF CURSOR come nei parametri e assegna REF CURSOR come parametri out, queste attività sono:

  1. Creare un progetto BizTalk e generare lo schema per la funzione che si vuole richiamare in un database Oracle.

  2. Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi dal database Oracle.

  3. Creare un'orchestrazione per richiamare la funzione nel database Oracle.

  4. Compilare e distribuire il progetto BizTalk.

  5. Configurare l'applicazione BizTalk creando porte di invio e ricezione fisiche.

  6. Avviare l'applicazione BizTalk.

    In questo argomento vengono fornite istruzioni per eseguire queste attività.

Esempio basato su questo argomento

Un esempio, Func_RefCursor, basato su questo argomento viene fornito anche con BizTalk Adapter Pack. Per altre informazioni, vedere Esempi di adapter.

Generazione dello schema

In questo argomento, per illustrare in che modo l'adattatore Oracle Database supporta la funzione di richiamo che accetta i parametri REF CURSOR, verrà richiamata la routine GET_ACTIVITY. Questa procedura accetta un IN REF CURSOR fortemente tipizzato e un IN OUT REF CURSOR fortemente tipizzato come parametri. La funzione restituisce uno stato, un OUT REF CURSOR debolmente tipizzato e un IN OUT REF CURSOR fortemente tipizzato. La procedura GET_ACTIVITY è disponibile come parte del ACCOUNT_PKG creato eseguendo gli script SQL forniti con gli esempi. Per altre informazioni sugli esempi e sugli script SQL, vedere Esempi di schemi.

Per richiamare la procedura di GET_ACTIVITY, viene quindi generato lo schema per la stessa procedura nello schema SCOTT\Package\ACCOUNT_PKG. Per altre informazioni su come generare lo schema , vedere Ottenere metadati per le operazioni di Oracle Database in Visual Studio .

Definizione di messaggi e tipi di messaggio

Lo schema generato in precedenza descrive i "tipi" necessari per i messaggi nell'orchestrazione. Un messaggio è in genere una variabile, il tipo per il quale è definito dallo schema corrispondente. È necessario collegare lo schema generato nel primo passaggio ai messaggi dalla finestra Visualizzazione orchestrazione del progetto BizTalk.

Per questo argomento, è necessario creare due messaggi, uno per inviare una richiesta al database Oracle e l'altra per ricevere una risposta.

Seguire questa procedura per creare messaggi e collegarli allo schema:

  1. Aprire la finestra Visualizzazione orchestrazione del progetto BizTalk, se non è già aperta. A tale scopo, fare clic su Visualizza, scegliere Altre finestre e quindi fare clic su Visualizzazione orchestrazione.

  2. In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi e quindi scegliere Nuovo messaggio.

  3. Fare clic con il pulsante destro del mouse sul messaggio appena creato e quindi scegliere Finestra Proprietà.

  4. Nel riquadro Proprietà per Message_1 eseguire le operazioni seguenti:

    Usare Per
    Identificatore Digitare Request.Type Request.
    Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare Func_RefCursor.OracleDBBindingSchema.GET_ACTIVITY, dove Func_RefCursor è il nome del progetto BizTalk. OracleDBBindingSchema è lo schema generato per la procedura di GET_ACTIVITY.
  5. Ripetere il passaggio precedente per creare un nuovo messaggio. Nel riquadro Proprietà per il nuovo messaggio eseguire le operazioni seguenti:

    Usare Per
    Identificatore Tipo Risposta.
    Tipo di messaggio Func_RefCursor.OracleDBBindingSchema.GET_ACTIVITYResponse

Configurazione dell'orchestrazione

È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per richiamare una routine con parametri REF CURSOR. In questa orchestrazione si rilascia un messaggio di richiesta in una posizione di ricezione definita. L'adapter Oracle Database utilizza questo messaggio e lo passa al database Oracle tramite ODP. La risposta dal database Oracle viene salvata in un'altra posizione. Un'orchestrazione tipica per richiamare funzioni e procedure con REF CURSOR conterrà:

  • Inviare e ricevere forme per inviare messaggi al database Oracle e ricevere risposte.

  • Porta di ricezione unidirezionale per ricevere messaggi di richiesta da inviare al database Oracle.

  • Porta di trasmissione bidirezionale per inviare messaggi di richiesta al database Oracle e ricevere risposte.

  • Porta di trasmissione unidirezionale per inviare le risposte dal database Oracle a una cartella.

    Un'orchestrazione di esempio è simile alla seguente:

    Orchestrazioni per l'uso di cursori ref in Oracle

Aggiunta di forme messaggio

Assicurarsi di specificare le proprietà seguenti per ognuna delle forme del messaggio. I nomi elencati nella colonna Shape sono i nomi delle forme di messaggio visualizzate nell'orchestrazione appena menzionata.

Forma Tipo di forma Proprietà
ReceiveMessage Ricevere - Impostare Il nome su ReceiveMessage
- Impostare Attiva su True
SendMessage Send - Impostare Il nome su SendMessage
ReceiveResponse Ricevere - Impostare il nome su ReceiveResponse
- Impostare Attiva su False
SendResponse Send - Impostare il nome su SendResponse

Aggiunta di porte

Assicurarsi di specificare le proprietà seguenti per ognuna delle porte logiche. I nomi elencati nella colonna Porta sono i nomi delle porte visualizzate nell'orchestrazione.

Porta Proprietà
FileIn - Impostare l'identificatore su FileIn
- Impostare il tipo su FileInType
- Impostare il modello di comunicazionesu unidirezionale
- Impostare la direzione di comunicazione da ricevere
LOBPort - Impostare l'identificatore su LOBPort
- Impostare il tipo su LOBPortType
- Impostare il modello di comunicazione su Request-Response
- Impostare la direzione di comunicazione su Send-Receive
SaveResponse - Impostare l'identificatore su SaveResponse
- Impostare il tipo su SaveResponseType
- Impostare il modello di comunicazionesu unidirezionale
- Impostare la direzione di comunicazione su Invia

Specificare i messaggi per le forme azione e connetterli alle porte

Nella tabella seguente vengono specificate le proprietà e i relativi valori che è necessario impostare per specificare i messaggi per le forme di azione e per collegarli alle porte. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nell'orchestrazione menzionata in precedenza.

Forma Proprietà
ReceiveMessage - Impostare il messaggio su Richiesta
- Impostare l'operazione su FileIn.REFCURSOR.Request
SendMessage - Impostare il messaggio su Richiesta
- Impostare l'operazione su LOBPort.REFCURSOR.Request
ReceiveResponse - Impostare il messaggio su Risposta
- Impostare l'operazione su LOBPort.REFCURSOR.Response
SendResponse - Impostare il messaggio su Risposta
- Impostare l'operazione su SaveResponse.REFCURSOR.Request

Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e l'orchestrazione è completata.

È ora necessario compilare la soluzione BizTalk e distribuirla in un BizTalk Server. Per altre informazioni, vedere Compilazione ed esecuzione di orchestrazioni.

Configurazione dell'applicazione BizTalk

Dopo aver distribuito il progetto BizTalk, l'orchestrazione creata in precedenza è elencata nel riquadro Orchestrazioni nella console di amministrazione di BizTalk Server. Per configurare l'applicazione, è necessario usare la console di amministrazione di BizTalk Server. Per una procedura dettagliata, vedere Procedura dettagliata: Distribuzione di un'applicazione BizTalk di base.

La configurazione di un'applicazione prevede:

  • Selezione di un host per l'applicazione.

  • Mapping delle porte create nell'orchestrazione alle porte fisiche nella console di amministrazione di BizTalk Server. Per questa orchestrazione è necessario:

    • Definire un percorso sul disco rigido e una porta file corrispondente in cui si rilascia un messaggio di richiesta. L'orchestrazione BizTalk utilizzerà il messaggio di richiesta e lo invierà al database Oracle.

    • Definire un percorso sul disco rigido e una porta file corrispondente in cui l'orchestrazione BizTalk rilascia il messaggio di risposta contenente la risposta dal database Oracle.

    • Definire un WCF-Custom fisico o WCF-OracleDB porta di trasmissione per inviare messaggi al database Oracle. È inoltre necessario specificare l'azione nella porta di trasmissione. Per informazioni su come creare WCF-Custom o WCF-OracleDB porte, vedere Configurare manualmente l'associazione di porte fisiche all'adapter di database Oracle.

      Nota

      La generazione dello schema tramite il componente aggiuntivo Del progetto BizTalk del servizio adapter di utilizzo crea anche un file di associazione contenente informazioni sulle porte e le azioni da impostare per tali porte. È possibile importare questo file di associazione dalla console di amministrazione di BizTalk Server per creare porte di trasmissione (per chiamate in uscita) o porte di ricezione (per le chiamate in ingresso). Per altre informazioni, vedere Configurare l'associazione di porte fisiche usando il file di associazione delle porte a Oracle Database.

Avvio dell'applicazione

È necessario avviare l'applicazione BizTalk per richiamare una routine in una tabella di database Oracle. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione.

In questa fase, assicurarsi di:

  • La porta di ricezione FILE per ricevere messaggi di richiesta per l'orchestrazione è in esecuzione.

  • La porta di trasmissione FILE per ricevere i messaggi di risposta dall'orchestrazione è in esecuzione.

  • Il WCF-Custom o WCF-OracleDB porta di trasmissione per inviare messaggi al database Oracle è in esecuzione.

  • L'orchestrazione BizTalk per l'operazione è in esecuzione.

Esecuzione dell'operazione

Dopo aver eseguito l'applicazione, è necessario eliminare un messaggio di richiesta nel percorso di ricezione FILE. Lo schema per il messaggio di richiesta deve essere conforme allo schema per la procedura generata in precedenza. Per altre informazioni sullo schema dei messaggi per richiamare le funzioni tramite l'adapter Oracle Database, vedere Schemi messaggio per funzioni e procedure .

Per richiamare la procedura di GET_ACTIVITY, è necessario specificare un IN REF CURSOR fortemente tipizzato e un IN OUT REF CURSOR fortemente tipizzato come parametri. Pertanto, il messaggio di richiesta per richiamare questa procedura è:

<GET_ACTIVITY xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">  
  <INRECS>BEGIN OPEN ? FOR SELECT * FROM ACCOUNTACTIVITY WHERE ACCOUNT=100001; END;</INRECS>  
  <INOUTRECS_IN>BEGIN ACCOUNT_PKG.GET_ALL_ACTIVITY(?); END;</INOUTRECS_IN>  
</GET_ACTIVITY>  

L'orchestrazione utilizza il messaggio di richiesta e lo invia al database Oracle. La risposta dal database Oracle viene salvata nell'altra posizione FILE definita come parte dell'orchestrazione.

La risposta per il messaggio di richiesta precedente è:

<?xml version="1.0" encoding="utf-8" ?>   
<GET_ACTIVITYResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">  
  <STATUS>5</STATUS>   
  <INOUTRECS>  
    <INOUTRECSRECORD xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACTIVITY">  
      <TID>1</TID>   
      <ACCOUNT>100001</ACCOUNT>   
      <AMOUNT>500</AMOUNT>   
      <DESCRIPTION />   
      <TRANSDATE>2007-10-16T16:58:44</TRANSDATE>   
      <PROCESSED>n</PROCESSED>   
    </INOUTRECSRECORD>  
    <INOUTRECSRECORD xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACTIVITY">  
      .....   
      .....   
    </INOUTRECSRECORD>  
    ....  
    ....  
  </INOUTRECS>  
  <OUTRECS>  
    <GenRecordRow xmlns="http://Microsoft.LobServices.OracleDB/2007/03">  
      <GenRecordColumn>  
        <GenRecordColumn>  
          <ColumnName>TID</ColumnName>   
          <ColumnValue>1</ColumnValue>   
          <ColumnType>System.Decimal</ColumnType>   
        </GenRecordColumn>  
        <GenRecordColumn>  
          ....   
        </GenRecordColumn>  
        .....  
        .....  
      </GenRecordColumn>  
    </GenRecordRow>  
    <GenRecordRow xmlns="http://Microsoft.LobServices.OracleDB/2007/03">  
      .....  
      .....  
    </GenRecordRow>  
    .....  
    .....  
  </OUTRECS>  
</GET_ACTIVITYResponse>  

Si noti che la risposta contiene uno stato, un OUT REF CURSOR debolmente tipizzato e un OGGETTO CUROSR OUT REF fortemente tipizzato.

Possibili eccezioni

Per informazioni sulle eccezioni che potrebbero verificarsi durante la chiamata di funzioni e procedure tramite BizTalk Server, vedere Eccezioni e gestione degli errori.

Procedure consigliate

Dopo aver distribuito e configurato il progetto BizTalk, è possibile esportare le impostazioni di configurazione in un file XML denominato file binding. Dopo aver generato un file di associazioni, è possibile importare le impostazioni di configurazione dal file in modo che non sia necessario creare le porte di trasmissione, le porte di ricezione e così via per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni dell'adapter di database Oracle.

Vedere anche

Sviluppare applicazioni BizTalk