Funzione PASSTHRU

La funzione PASSTHRU valuta un'espressione ed esegue la stringa di caratteri risultante come un'istruzione del database, restituendo una serie di risultati.

La funzione PASSTHRU è simile all'istruzione PASSTHRU, descritta in Istruzione PASSTHRU.

SYNTAX
Note:
  1. La metà inferiore del diagramma di sintassi principale descrive la sintassi mantenuta in vigore in funzione della compatibilità con le versioni precedenti.

Utilizzo

L'utilizzo principale della funzione PASSTHRU è quello di inviare istruzioni SELECT complesse, attualmente non supportate dal broker, ai database. Esempi di istruzioni SELECT complesse non attualmente supportate dal broker sono quelle che contengono clausole GROUP BY oppure HAVING.

La prima espressione viene valutata e la stringa di caratteri risultante viene passata al database indicato da DatabaseReference (nella clausola in the TO) per l'esecuzione. Se la clausola TO non è specificata, viene utilizzato il database indicato dall'attributo data source del nodo.

Utilizzare il punto interrogativo (?) nella stringa del database per indicare i parametri. I valori del parametro vengono forniti dalla clausola VALUES.

Se la clausola VALUES è specificata, le relative espressioni vengono valutate e passate al database come parametri (ossia, i relativi valori vengono sostituiti ai punti interrogativi nell'istruzione del database).

Se esiste una sola espressione VALUE, il risultato può essere o meno un elenco. Se è un elenco, i valori scalari dell'elenco vengono sostituiti ai punti interrogativi, in sequenza. Se non è un elenco, il singolo valore scalare viene sostituito al (singolo) punto interrogativo nell'istruzione del database. Se esistono più espressioni VALUE, nessuna delle espressioni dovrebbe risultare in un elenco. I relativi valori scalari vengono sostituiti ai punti interrogativi, in sequenza.

Poiché l'istruzione del database viene creata dal programma utente, non è necessario utilizzare i contrassegni del parametro (i punti interrogativi) o la clausola VALUES, perché tutta l'istruzione del database può essere fornita, come stringa di letterali, dal programma. Tuttavia, utilizzare sempre i contrassegni del parametro quando possibile, perché ciò riduce il numero di istruzioni diverse da preparare e memorizzare nel database e nel broker.

Riferimento del database

Un riferimento del database è un caso particolare dei riferimenti di campo utilizzati per fare riferimento alle strutture ad albero del messaggio. E' formato dalla parola "Database" seguita da un nome di origine dati (il nome di un'istanza del database).

E' possibile specificare il nome dell'origine dati direttamente oppure mediante un'espressione racchiusa tra parentesi ({...}). Un nome di origine dati specificato direttamente è soggetto alla sostituzione del nome. Ossia, se il nome utilizzato è stato dichiarato per essere un nome riconosciuto, viene utilizzato il valore del nome dichiarato invece del nome stesso (consultare Istruzione DECLARE).

Gestione degli errori

E' possibile che durante le operazioni di PASSTHRU si verifichino alcuni errori. Ad esempio, il database potrebbe non essere operativo oppure l'istruzione potrebbe essere non valida. In tali casi, viene generata un'eccezione (a meno che la proprietà Genera eccezione in caso di errore database del nodo non sia impostata su FALSE). Tali eccezioni impostano valori di testo dell'errore, dell'errore nativo, dello stato e del codice SQL e possono essere gestite mediante i programmi di gestione degli errori (consultare l'istruzione DECLARE HANDLER).

Per ulteriori informazioni relative alla gestione degli errori del database, consultare Cattura dello stato del database.

Esempio

L'esempio riportato di seguito esegue una SELECT sulla tabella "Table1" nello schema "Schema1" nel database DSN1, passando due parametri alla clausola WHERE e richiedendo che la serie di risultati venga ordinata per nome in ordine ascendente. La serie di risultati è assegnata alla cartella SelectResult:
SET OutputRoot.XML.Data.SelectResult.Row[] = 
  PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R WHERE R.Name = ? OR R.Name = 
           ? ORDER BY Name'
   TO Database.DSN1
   VALUES ('Name1', 'Name4'));
Concetti correlati
Panoramica di ESQL
Attività correlate
Sviluppo di ESQL
Riferimenti correlati
Istruzione PASSTHRU
Funzioni ESQL varie
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05890_