Ciao a tutti,
Prima di tutto vi spiego la mia situazione:
Ho una tabella xTabella1 che è strutturata in questo modo:
campo1 int, campo2 varchar(80), campo3 xml
il campo3 come potete vedere è un xml e contiene all'interno una struttura variabile in base al record della tabella xTabella1.
Esempio:
nel record1 l'xml è così:
codice:<?xml version="1.0" encoding="utf-8"?> <TAG1> <TAG2> <CODICE>ALIM</CODICE> <DESCRIZIONE>Alimentatore</DESCRIZIONE> <VALORE1>1430</VALORE1> </TAG2> <TAG2> <CODICE>PC</CODICE> <DESCRIZIONE>PC</DESCRIZIONE> <VALORE1>45464</VALORE1> </TAG2> <TAG2> <CODICE>MTH</CODICE> <DESCRIZIONE>MOTHERBOARD</DESCRIZIONE> <VALORE1>500</VALORE1> </TAG2> </TAG1>
nel record 2 così:
Come vedete la struttura dell'xml cambia da record a record.codice:<?xml version="1.0" encoding="utf-8"?> <TAG1> <TAG2> <CODICE>ALIM</CODICE> <DESCRIZIONE>Alimentatore</DESCRIZIONE> <VALORE1>1430</VALORE1> <VALORE2>130</VALORE2> </TAG2> <TAG2> <CODICE>PC</CODICE> <DESCRIZIONE>PC</DESCRIZIONE> <VALORE1>45464</VALORE1> <VALORE2>14730</VALORE2> </TAG2> <TAG2> <CODICE>MTH</CODICE> <DESCRIZIONE>MOTHERBOARD</DESCRIZIONE> <VALORE1>500</VALORE1> <VALORE2>1330</VALORE2> </TAG2> </TAG1>
A questo punto mi sono fatto una function in SQL che passandogli come parametro l'id del record mi legge l'elenco dei campi dell'xml, mi costruisce uno statement variabile mettendo come nomi colonna i tag del campo XML e scrivendomi i relativi valori.
Un esempio di ciò che torna la mia funzione passandogli per esempio l'id del record contenente il primo XML di esempio sarà:
Il mio problema però è che, essendo questa struttura variabile, non posso farmi tornare una TABLE dalla funzione perchè essa deve avere una struttura ben definita, e quindi questa funzione mi esegue semplicemente lo statement che mi sono costruito e me lo fa vedere a video, senza salvarlo da nessuna parte. Siccome devo però mettere questo risultato in join con un'altra tabella ho bisogno che questa funzione mi ritorni una tabella come risultato con la struttura variabile dell'xml.codice:CODICE DESCRIZIONE VALORE1 ALIM Alimentatore 1430 PC PC 45464 MTH MotherBoard 500
E' possibile farlo?Come faccio altrimenti a fare join tra questo risultato e un'altra tabella? (la tabella risultante dall'xml ha la stessa struttura della tabella fisica che andrò ad interrogare e a mettere in join, tra l'altro)
Mi va bene qualsiasi soluzione: un'assembly fatto in VB.NET, piuttosto che una stored procedure o una function in SQL, piuttosto che qualsiasi altro modo :-(
Scusate se mi sono dilungato ma non avevo altra possibilità di farvi capire altrimenti.
Grazie anticipatamente!!!

Rispondi quotando