Istruzione INSERT

L'istruzione INSERT inserisce una riga in una tabella del database.

SINTASSI

Una singola riga viene inserita nella tabella identificata da TableReference. L'elenco ColumnName identifica quelle colonne nella tabella di destinazione a cui devono essere assegnati valori specifici. Tali valori sono determinati dalle espressioni all'interno della clausola VALUES (la prima espressione assegna il valore della prima colonna indicata e così via). Il numero di espressioni nella clausola VALUES deve essere uguale al numero di colonne indicate. A tutte le colonne presenti nella tabella ma non indicate nell'elenco vengono assegnati i relativi valore predefiniti.

Riferimento di tabella

Un riferimento di tabella è un caso particolare dei riferimenti di campo utilizzati per fare riferimento alle strutture ad albero del messaggio. Inizia sempre con la parola "Database" e può contenere quanto riportato di seguito:
  • Solo il nome della tabella
  • Il nome dello schema ed il nome della tabella
  • Il nome dell'origine dati (il nome di un'istanza del database), il nome dello schema ed il nome della tabella
In ciascun caso, il nome può essere specificato direttamente oppure mediante un'espressione racchiusa tra parentesi ({...}). Un nome di origine dati, di schema o di tabella 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).

Se non viene specificato il nome dello schema, viene utilizzato lo schema predefinito per l'utente del database del broker.

Se non viene specificato il nome dell'origine dati, viene utilizzato il database indicato dall'attributo data source del nodo.

Gestione degli errori

E' possibile che durante le operazioni di inserimento si verifichino degli errori. Ad esempio, il database potrebbe non essere operativo o per la tabella potrebbero essere definiti dei vincoli che verrebbero violati dalla nuova riga. 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

Negli esempi riportati di seguito si suppone che la proprietà dataSource del nodo Database sia stata configurata e che il database identificato contenga una tabella denominata TABLE1 con le colonne A, B e C.

Considerare un messaggio con il seguente contenuto XML generico:
<A>
 <B>1</B>
 <C>2</C>
 <D>3</D>
</A>
La seguente istruzione INSERT inserisce una nuova riga nella tabella con i valori 1, 2 e 3 per le colonne A, B e C:
INSERT INTO Database.TABLE1(A, B, C) VALUES (Body.A.B, Body.A.C, Body.A.D);
L'esempio successivo illustra l'utilizzo dei nomi della tabella, dello schema e dell'origine dati calcolati:
-- Declare variables to hold the data source, schema, and table names
-- and set their default values
DECLARE Source CHARACTER 'Production';
DECLARE Schema CHARACTER 'db2admin';
DECLARE Table  CHARACTER 'DynamicTable1';

-- Code which calculates their actual values comes here

-- Insert the data into the tabl
INSERT INTO Database.{Source}.{Schema}.{Table} (Name, Value) values ('Joe', 12.34);
Concetti correlati
Panoramica di ESQL
Attività correlate
Sviluppo di ESQL
Cattura dello stato del database
Riferimenti correlati
Diagrammi di sintassi: tipi disponibili
Istruzioni ESQL
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05050_