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.
SYNTAXL'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.
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).
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.
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'));