begin process at 2012 05 27 01:14:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Procédures Stockées

 > 

xml comme une table.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

xml comme une table.

vendredi 5 octobre 2007 à 13:57:49 | xml comme une table.

bossun

salut,

j'ai un peu de peine avec t-sql et xml.


j'ai une structure comme ceci..
Code :
<Projects>
<Project>
<Location>GE</Location>
</Project>
</Projects>

cette donnée se trouve dans une variable.. je l'obtiens en faisant une requete...


je voudrais savori s'il est possible d'exploiter ceci comme une table pour tester les valeurs...

le but est de faire un truc du genre

Code :
WHERE Val IN(liste elements xml)
suis-je assez clair?




Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F
vendredi 5 octobre 2007 à 18:29:14 | Re : xml comme une table.

dominique.stock

Bonjour
Dans l'aide SQL Server 2000:Regardes à :

Extraction et écriture de données XML

Vous pouvez exécuter des requêtes SQL afin de renvoyer des résultats sous forme de données XML plutôt que d'ensembles de lignes ordinaires. Ces requêtes peuvent être exécutées directement ou à partir de procédures stockées. Pour extraire des résultats directement, vous utilisez la clause FOR XML de l'instruction SELECT puis définissez un mode XML dans cette clause : RAW, AUTO ou EXPLICIT.

Par exemple, l'instruction SELECT suivante extrait des informations des tables Customers et Orders de la base de données Northwind. Cette requête spécifie le mode AUTO dans la clause FOR XML :

SELECT Customers.CustomerID, ContactName, CompanyName,
       Orders.CustomerID, OrderDate
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID 
AND (Customers.CustomerID = N'ALFKI' 

    OR Customers.CustomerID = N'XYZAA')
ORDER BY Customers.CustomerID
FOR XML AUTO

Là où vous pouvez utiliser la clause FOR XML pour extraire des données sous forme de document XML, vous pouvez utiliser la fonction Transact-SQL OPENXML pour insérer des données représentées sous forme de document XML. OPENXML est un fournisseur d'ensembles de lignes similaire à une table ou à une vue, qui fournit un ensemble de lignes à partir de documents XML en mémoire. En fournissant une vue des données internes d'un document XML sous la forme d'un ensemble de lignes, OPENXML permet d'accéder à des données XML comme s'il s'agissait d'un ensemble de lignes relationnel. Les enregistrements de l'ensemble de lignes peuvent être stockés dans des tables de base de données. OPENXML peut apparaître dans les instruction SELECT et SELECT INTO à la place habituelle d'une vue ou table source.

L'exemple suivant montre l'utilisation de OPENXML dans une instruction INSERT et dans une instruction SELECT. L'exemple de document XML comprend des éléments <Customers> et <Orders>. D'abord, la procédure stockée sp_xml_preparedocument analyse le document XML. Le document analysé est une représentation arborescente des n½uds (éléments, attributs, texte, commentaires, etc.) qui figurent dans le document XML. OPENXML fait ensuite référence à ce document XML analysé et fournit, sous la forme d'un ensemble de lignes, une vue de tout ou partie de ce document. Une instruction INSERT utilisant OPENXML peut ainsi insérer des données dans une table de base de données à partir de ce type d'ensemble de lignes. Plusieurs appels OPENXML peuvent être utilisés pour fournir une vue des ensembles de lignes de différentes parties du document XML et pour les traiter, par exemple pour les insérer dans différentes tables (ce processus s'appelle également " Morcellement XML dans des tables "). Dans l'exemple suivant, un document XML est morcelé de telle sorte que les éléments <Customers> sont stockés dans la table Customers et que les éléments <Orders> sont stockés dans la table Orders à l'aide de deux instructions INSERT.

Cet exemple illustre également comment une instruction SELECT peut, à l'aide du mot-clé OPENXML, extraire des données CustomerID et OrderDate du document XML.

DECLARE @hDoc int
EXEC sp_xml_preparedocument @hDoc OUTPUT, 
      N'<ROOT>
         <Customers CustomerID="XYZAA" ContactName="Joe" 
               CompanyName="Company1">
            <Orders CustomerID="XYZAA" 
               OrderDate="2000-08-25T00:00:00"/>
            <Orders CustomerID="XYZAA" 
               OrderDate="2000-10-03T00:00:00"/>
         </Customers>
         <Customers CustomerID="XYZBB" ContactName="Steve"
               CompanyName="Company2">No Orders yet!
         </Customers>
      </ROOT>'
-- Use OPENXML to provide rowset consisting of customer data.
INSERT Customers 
SELECT * 
FROM OPENXML(@hDoc, N'/ROOT/Customers') 
     WITH Customers
-- Use OPENXML to provide rowset consisting of order data.
INSERT Orders 
SELECT * 
FROM OPENXML(@hDoc, N'//Orders') 
     WITH Orders
-- Using OPENXML in a SELECT statement.
SELECT * FROM OPENXML(@hDoc, N'/ROOT/Customers/Orders') with (CustomerID nchar(5) '../@CustomerID', OrderDate datetime)
-- Remove the internal representation of the XML document.
EXEC sp_xml_removedocument @hDoc

L'illustration suivante montre l'analyse arborescente du document XML précédent créée par la procédure stockée sp_xml_pareparedocument.



Dom


Cette discussion est classée dans : table, code, prendre, xml


Répondre à ce message

Sujets en rapport avec ce message

sql tri?!!! [ par abari ] salut tout le mondej'ai un probléme de tri?!!! dans ma table les enregistrement sont stockées d'une facon des ordonnées comme suit:code nom prénom doublons avec distinct [ par deubal ] bonjour, voila j'ai une table contenant des fournisseurs avec un code unique, un libellé, un code postal, et une ville.je voudrais creer une requete q mise a jour dans une base de donnée [ par goueg83460 ] bonjour je voudrais faire une requete UPDATE sachant qu'elle va enregistrer un code d'accés dans une table reservation. Sachant que pour trouver ce co Exporter la structure d'une table dans un fichier XML structuré [ par djdiabolik ] Bonjour,j'ai un problème à résoudre rapidement :je dois générer un fichier XML contenant la structure d'une table sous SQL Server 2000, après quelques requête admis /ajourné [ par moun778 ] salut a tt le mondej'ai une table note qui contient  les champs suivant(annee scolaire,annee d'etude,code module,code examen, note)je veux extraire a XML - XSD et SQLXMLBulkLoad [ par Troyan ] bonjour,j'utilise SQLXMLBulkLoad  pour insérer un fichier XML dans ma base SQL 2005ca marche impeccable il me créé bien les 2 tables dans ma base avec passer une table en paramètre [ par bossun ] Salut, Comment faire pour passer une table en paramètre d'une fonction ou procédure stocke dans MS sql 2005??J'ai lu dans la MSDN que ce n'était pas p Association n,m entre deux tables sans intégrité référentielle POSSIBLE ??? [ par aitoz ] Bonjour,Je patauge depuis 2 jours sur un une relation entre deux tables.Mon message d'erreur dit :Les colonnes de la table 'DICO' ne correspondent pas Différentes valeurs pour un même code [ par Neurasthenie ] Bonjour,Je travailles actuellement sur un projet de migration (de base à base) et j'écris donc les procédures stockées qui permettront d'aller cherche Trigger [ par frop01 ] Salut,J'ai une table Categorie (Code_cat, Libelle) et une autre table sous_categorie (code_scat, code_cat, libelle)Je voudrais créer un déclencheur qu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,480 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales