J'ai une table dans une base de données SQL 2005 qui contient une colonne définie en tant que type de données xml. J'essaye d'écrire le proc stocké qui interroge le xml et renvoie un resultset d'une instruction select. J'ai vu des exemples de valeurs scalaires retournées ou xml mais pas comment retourner un resultset. Est-ce que je vais devoir utiliser openxml ou existe-t-il une autre solution?Convertir un type de données XML dans SQL 2005 en un jeu de résultats relationnel
Répondre
Le type de données xml possède son propre ensemble de méthodes que vous pouvez utiliser pour gérer les données de la colonne. Dans ce cas, vous auriez probablement utiliser quelque chose comme ceci:
select xmlColumnName.value('XpathExpression', 'outputSqlType') from dataTable
Par exemple,
select xmlColumnName.value('/root/node[@name="myname"]', 'varchar(60)')
Les méthodes query(), la valeur(), existent(), modifier() et noeuds (), et vous pouvez en lire plus à leur sujet dans la documentation en ligne.
Vous pouvez utiliser le type de données xml ou OPENXML. Une autre affiche donnait un exemple de type de données XML, donc voici un exemple OPENXML.
Cela dépend vraiment du schéma XML. SQL Server peut ne pas très bien aimer votre schéma. Si vous avez un contrôle sur le schéma, cela aide. Vous devrez peut-être utiliser une variable de table et générer les données avec plusieurs appels à OPENXML pour tout interroger.
Par exemple, l'entrée XML peut être traité comme suit:
DECLARE @idoc int
DECLARE @doc nvarchar(max)
SET @doc = '
<xml>
<Entry Type="Error" Start="2008-11-19 02:16:00" End="2008-11-20 04:55:00" />
<Entry Type="Success" Start="2008-11-25 12:45:00" End="2008-11-25 13:01:00" />
</xml>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
SELECT [EventType]
,[EventStart]
,[EventEnd]
FROM OPENXML (@idoc, '//Event',1)
WITH ([Type] varchar(30)
,[Start] varchar(30)
,[End] varchar(30)
)
L'un des défis que j'ai rencontrés était l'analyse syntaxique date XML (ISO8601 avec le « T » et le fuseau horaire possible). J'ai fini par créer un assemblage .NET avec une seule ligne de code pour le convertir en un datetime que SQL a aimé.
- 1. javascript - accès à un champ de type de données varchar (max) dans le jeu de résultats
- 2. T-SQL 2005: Supprimer la sortie du jeu de résultats
- 3. SQL Server 2005 - Comment convertir le type de données image en format de caractères
- 4. En SQL comment puis-je convertir un type de données monétaire en nombre décimal?
- 5. Chargement d'un fichier XML crypté dans un jeu de données
- 6. Jeu de données XML dans Crystal Reports
- 7. Comment créer un odbcparameter pour un type de données xml server sql pour un objet odbccommand?
- 8. Comment convertir un fichier XML en base de données?
- 9. MySQL/PHP - Interroger un jeu de résultats?
- 10. limite de taille pour le type de données XML dans SQL 2005
- 11. Impossible de retourner un jeu de résultats dans le contexte
- 12. Utilisation correcte du type de données XML dans SQL Server?
- 13. Comment créer un classement habituel de mon jeu de résultats dans SQL?
- 14. Comment convertir un ensemble de données en objet de type fort?
- 15. Est-ce que SQL Server 2005 a un équivalent au type de données ENUM de MySql?
- 16. Convertir un fichier XML en DBF
- 17. COMMENT convertir CSV en jeu d'enregistrements dans T-SQL?
- 18. XML et Sql Server 2005
- 19. Impossible de stocker les résultats du test de chargement dans un magasin de résultats TFS 2005
- 20. SSRS combinant les lignes en jeu de résultats
- 21. sous-chaîne de valeur de la colonne type XML dans le serveur SQL 2005
- 22. Aplatir un jeu d'enregistrements dans SQL Server?
- 23. Inconvénients (le cas échéant) Avec SQL Server 2005 XML Type de données
- 24. Sql Server 2005 type de données Xml a CDATA enlevé sur INSERT
- 25. Migration de données en SQL 2005
- 26. données XML dans le serveur itération SQL 2005
- 27. Sql 2005 migration de données
- 28. Type de données XML SQL Server requête numéro
- 29. données Xml dans la chaîne de type
- 30. SQL: Comment sélectionner un élément XML dans une variable plus grande de type XML?