J'ai xml semblable à ceci:XML dynamique de procédure stockée Insérer
<main>
<kim id="child1_id" name="this is child1" active="1" />
<kim id="Child2 id" name="this is child2" active="1" />
<lee id="child3_id" heigt="189" weight="70" />
</main>
avec kim et lee est le nom des tables dans ma base de données. Maintenant je dois faire une procédure stockée pour insérer la valeur du xml ci-dessus à Kim et Lee. Je peux obtenir le nom de la table à l'aide OPENXML et je sais que je peux utiliser requête comme ceci pour l'insertion (par exemple) Valeur kim:
declare @tempChild1 table(
id varchar(20),
name varchar(50),
active bit
)
select C.value('@id', 'varchar(20)') as id,
C.value('@name', 'varchar(50)') as name,
C.value('@active', 'bit') as active,
from @xml.nodes('/main/kim') t (C)
insert into child1
select *
from @tempChild1
Le problème est, il est un xml dynamique et je ne sais pas quelles sont les tables viendrait du xml, mais je dois quand même faire une requête d'insertion basée sur le xml. Est-il possible de le faire en SQL? Puis-je faire la déclaration comme ci-dessous du xml ci-dessus?
exec spx_kim @xml
exec spx_lee @xml
avec @xml est la valeur de chaque noeud kim et lee dans le fichier XML.
J'apprécie vraiment chaque aide que vous me donnez.
J'ai déjà essayez cela avant, mais encore une fois, je ne sais pas quelle table viendrait du xml. Disons que s'il y a plus de table qui vient de différentes tables, je devrais (nom de la table) devrais-je faire un autre sp pour ais table? Merci de votre aide :) –