我有类似这样的XML:动态XML存储过程插入
<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>
与金正日和李是在我的数据库表的名称。现在我必须做一个存储过程,将上述xml中的值插入kim和lee。我可以用OPENXML得到表的名字,我知道,我可以用这样的查询,用于插入(例如)金值:
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
的问题是,它是一个动态的XML,我不知道是什么表会来自xml,但我仍然需要根据xml进行插入查询。有没有可能在SQL中做到这一点?我能从上面的XML中做出如下的声明吗?
exec spx_kim @xml
exec spx_lee @xml
with @xml是xml中每个kim和lee节点的值。
我真的很感谢你给我的每一个帮助。
我已经尝试之前,但再一次,我不知道什么表将来自XML。比方说,如果有更多的表来自不同的表,即ais(表名),我应该为ais表创建另一个表?谢谢你的帮助 :) –