SQL SERVER 2005 creare file xml

lunedì 12 maggio 2008 - 09.43

M@LKAV Profilo | Junior Member

Hola a tutti!
Mi sto avventurando per necessita lavorative nel mondo degli xml con sql server 2005
Mi sto documentando ma per ora non ho trovato niente che mi possa esser d'aiuto!

Il problema e questo!
Io ho tre file xml con relativa struttura!
Io ho necessita da una stored di riempire questo file xml con dei dati presi da una select.

Qualche consigilio??
Per ora ho trovato solo come leggere da un file xml ma non viceversa!!
Grazie anticipatamente per ogni risposta

Malkav

lbenaglia Profilo | Guru

>Il problema e questo!
>Io ho tre file xml con relativa struttura!
>Io ho necessita da una stored di riempire questo file xml con
>dei dati presi da una select.
>
>Qualche consigilio??

Ciao Malkav,

prova a leggere il seguente post:
http://blogs.dotnethell.it/lorenzo/Come-esportare-su-file-un-result-set-in-formato-XML-con-SQL-Server-2005__6302.aspx

>Grazie anticipatamente per ogni risposta
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

M@LKAV Profilo | Junior Member

Ok perfetto!
L'esempio e perfetto ti ringrazio!!
Ora la mia domanda e un altra!
Posso includere questo file xml dentro un campo della select che restituisco??

lbenaglia Profilo | Guru

>Posso includere questo file xml dentro un campo della select
>che restituisco??

Non ti seguo. Tu devi scrivere una SELECT...FOR XML che restuisca quindi uno stream XML al posto di un result set.
Questo stream XML lo andrai a memorizzare in una variabile XML che passerai come argomento alla stored procedure dbo.up_SaveXMLTofile.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

M@LKAV Profilo | Junior Member

si ma posso anche dichiarare un campo nell tabella xml no?
posso includere il file in que campo?

lbenaglia Profilo | Guru

>si ma posso anche dichiarare un campo nell tabella xml no?
Intendi dichiarare una colonna di tipo XML? Si.

>posso includere il file in que campo?
Intendi fare una INSERT valorizzando la colonna XML? Si.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

M@LKAV Profilo | Junior Member

Quello!!
Guarda sto entrando a far parte del mondo xml in questo momento!
Le specifiche che mi sono state data sono le seguenti

tre file xml che identificano un tipo di ordine da inviare!
Io dalla tabella iorders quando viene inserito un nuovo record devo estrarre il record creato con una colonna xml contenente il file valorizzato!

lbenaglia Profilo | Guru

>Io dalla tabella iorders quando viene inserito un nuovo record
>devo estrarre il record creato con una colonna xml contenente
>il file valorizzato!

Ti seguo ancora poco... cosa intendi con "estrarre il record"?
La stored procedure che ti ho segnalato si aspetta in input uno stream XML (quindi il contenuto di una colonna/variabile XML, NON un result set) ed il nome del file XML che vuoi salvare sul file system.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

M@LKAV Profilo | Junior Member

Scusami per le spiegazioni poco....risolutive!!

Io ho una stord che inserisce un nuovo record nella tabella iorders e alla fine restituisce il record dell'ordine inserito!!
Alla tabella iorders ho aggiunto un campo di colonna con formato xml!

Ora alla fine della stored quanto restituisco il record inserito nel campo xml devo restituire il file xml creato in base alla struttura scelta!
Per questo che ho detto ne ho tre file xml!onguno per i tre tipi di ordini che si possono inserire!

lbenaglia Profilo | Guru

>Ora alla fine della stored quanto restituisco il record inserito
>nel campo xml devo restituire il file xml creato in base alla
>struttura scelta!

E come stabilisci il nome del file?
Chi è il client che esegue la sp?

Da quello che posso capire il soggetto che deve salvare il files XML è quello che richiama la sp di inserimento, pertando se si tratta di una applicazione esterna a SQL Server, sarà quest'ultima che dovrà occuparsi della questione.

Se si tratta di una applicazione .Net, potrai riutilizzare gran parte del codice della sp che ti ho indicato in precedenza.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

M@LKAV Profilo | Junior Member

Allora l'applicazione esterna in C++ prende il recordo restituito dalla stored con il campo xml e invia i dati tramite un protocollo di comunicazione che si aspetta quel file xml con quel tipo di dati!

lbenaglia Profilo | Guru

>Allora l'applicazione esterna in C++ prende il recordo restituito
>dalla stored con il campo xml e invia i dati tramite un protocollo
>di comunicazione che si aspetta quel file xml con quel tipo di
>dati!

OK, e perché parlavi di salvare i files XML quando invece non devi fare altro che utilizzare "un protocollo di comunicazione"?
A proposito, cosa intendi con "protocollo di comunicazione"?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

M@LKAV Profilo | Junior Member

Ti spiego!
Abbiamo un applicazione che utilizza un protocollo di comunicazione finanziario!
Da specifiche ci sono stati dati questi tre file xml poiche il protocollo accetta solo questi tre formati per identificare gli ordini da inviare!

Visto che le operazioni controllo per la creazione di un ordine vengono fatti tutti dalla stored Insert_new_order ho pensato fosse piu perfomante dare all'applicazione in c++ gia un campo xml contenente il formato esatto da trasmettere!
Cmq accetto consigli per questa cosa!

Alla fine questi file xml contentono i dati da inviare per ogni tipo di ordine previsto!
I tipi di ordine sono tre
Immediato
Con data scadenza
Ad accettazione

io nella mia tab iorders ho aggiunto un campo xml ora vorrei prendere in base al tipo di ordine che devo inserire il relativo file xml.
Comporlo con i dati che ho nelle varie variabili (qty, codice e altro) e inserirlo nella colonna XML_DATA della tabella iorders in modo che l'applicazione possa prendere quel dato dalla colonna e spararlo immediatamente all'applicazione con cui comunica!

Questo e quanto!!
Cosa mi puoi dire al riguardo!
L'esempio che mi hai fatto vedere e perfetto per scrivere un file xml!ma per memorizzarlo nel campo della tabella iorders??
Forse ti sembrero un po lento di comrpendonio ma preferisco non omettere i dubbi!

lbenaglia Profilo | Guru

>io nella mia tab iorders ho aggiunto un campo xml ora vorrei
>prendere in base al tipo di ordine che devo inserire il relativo
>file xml.
>Comporlo con i dati che ho nelle varie variabili (qty, codice
>e altro) e inserirlo nella colonna XML_DATA della tabella iorders
>in modo che l'applicazione possa prendere quel dato dalla colonna
>e spararlo immediatamente all'applicazione con cui comunica!
>
>Questo e quanto!!
>Cosa mi puoi dire al riguardo!
Che non devi salvare alcun file, ma semplicemente recuperare la riga (che tra le altre colonne contiene anche quella XML) ed incapsularlo nel tuo "protocollo".

>L'esempio che mi hai fatto vedere e perfetto per scrivere un
>file xml!ma per memorizzarlo nel campo della tabella iorders??
Una banalissima INSERT tabella VALUES ('pippo', 'pluto', '<elemento1>....</elemento1>');

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

M@LKAV Profilo | Junior Member

Quindi la variabile @xml_Data dell'esempio la memorizzo nel campod della tabella e la restituisco normalmente giusto?

Cmq grazie per la pazienza veramente!

lbenaglia Profilo | Guru

>Quindi la variabile @xml_Data dell'esempio la memorizzo nel campod
>della tabella e la restituisco normalmente giusto?
Giusto.

>Cmq grazie per la pazienza veramente!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5