Istruzione PASSTHRU

L'istruzione PASSTHRU valuta un'espressione ed esegue la stringa di caratteri risultante come un'istruzione del database.

SYNTAX
Note:
  1. La metà inferiore del diagramma di sintassi principale (il secondo dei due sistemi di codifica di Expression da trasmettere a PASSTHRU) descrive la sintassi mantenuta in vigore in funzione della compatibilità con le versioni precedenti.

Utilizzo

L'utilizzo principale dell'istruzione PASSTHRU è quello di inviare comandi di amministrazione ai database (ad esempio, per creare una tabella).
Nota: Per richiamare le procedure memorizzate, non utilizzare PASSTHRU ma utilizzare l'istruzione CALL. Ciò è dovuto al fatto che PASSTHRU impone delle limitazioni (non è possibile utilizzare i parametri di output, ad esempio).

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.

Esempi

L'esempio riportato di seguito crea la tabella "Customers" nello schema "Shop" nel database DSN1:
PASSTHRU 'CREATE TABLE Shop.Customers (
  CustomerNumber INTEGER,
  FirstName      VARCHAR(256),
  LastName       VARCHAR(256),
  Street         VARCHAR(256),
  City           VARCHAR(256),
  Country        VARCHAR(256)
)' TO Database.DSN1;
Se, come nell'ultimo esempio, l'istruzione ESQL è specificata come un letterale di stringa, è necessario racchiuderla tra apici singoli. Se, tuttavia, è specificata come una variabile, non immettere gli apici. Ad esempio:
SET myVar = 'SELECT * FROM user1.stocktable';
SET OutputRoot.XML.Data[] = PASSTHRU(myVar);
L'esempio riportato di seguito "rilascio" (elimina) la tabella "Customers" nello "Shop" nel database DSN1:
PASSTHRU 'DROP TABLE Shop.Customers' TO Database.DSN1; 
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05100_