La possibilità di scambiare dati utilizzando il linguaggio XML è un requisito comune di molte delle applicazioni odierne.
Ipotizziamo che la vostra organizzazione abbia terziarizzato la gestione logistica del magazzino di stoccaggio dei prodotti (finiti) destinati alla vendita. Tutte le spedizioni dovranno quindi essere preparate presso questo punto di stoccaggio situato ad esempio in un'altra nazione. Il sistema informativo utilizzato dal fornitore dei servizi logistici è diverso da quello utilizzato nella vostra organizzazione e non potete implementare un servizio di replica, la vostra organizzazione utilizza SQL Server come database engine.
Dovete comunicare periodicamente gli ordini di vendita da evadere con tutte le informazioni necessarie per preparare ed effettuare le spedizioni. La vostra organizzazione dovrà ricevere notifica delle spedizioni avvenute per poter emettere le relative fatture di vendita.
Una possibile soluzione è rappresentata dall’utilizzo di file XML scambiati con il protocollo FTP, lo schema generale è illustrato in figura 1.

Figura 1
Gli ordini da evadere potranno essere esportati utilizzando, ad esempio, la clausola FOR XML che:
- Estende la sintassi del costrutto SELECT
- Restituisce XML invece di righe e colonne
- Opportunamente configurata restituisce attributi, elementi e schema
- Agevola le applicazioni client (dipartimentali) che possono lavorare con XML
Le notifiche delle spedizioni avvenute potranno essere importate utilizzando la stored procedure USP_IMPORT_XML_INTO_SQL().
Il file XML illustrato in figura 2 rappresenta la notifica dell’avvenuta spedizione, per semplicità è stato utilizzato un solo campo di tipo testo Field1, il file di esempio contiene due notifiche Valore1 e Valore2.

Figura 2
Eseguiamo ora l’importazione del file TestTab.xml salvato in C:\XML\In.
/* Importazione dati da file XML a tabella SQL Server */
-- Create table TESTTAB
CREATE TABLE dbo.TESTTAB
(ID INT IDENTITY(1, 1) NOT NULL,
FIELD1 VARCHAR(128)
PRIMARY KEY(ID))
-- Import file XML TestTab
TRUNCATE TABLE TESTTAB
EXEC DBO.USP_IMPORT_XML_INTO_SQL 'C:\XML\In', 'TESTTAB.xml', 'TESTTAB'
SELECT * FROM TESTTAB
La figura 3 illustra il contenuto della tabella TestTab dopo l’importazione del file XML.

Figura 3
/* Pulizia */
-- Drop table TESTTAB
IF OBJECT_ID('TESTTAB') IS NOT NULL
DROP TABLE dbo.TESTTAB