我有类似这样的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>
with kim and lee 是我数据库中表的名称。现在我必须创建一个存储过程来将上面 xml 中的值插入到 kim 和 lee 中。我可以使用 OPENXML 获取表名,并且我知道我可以使用这样的查询来插入(例如)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
问题是,它是一个动态 xml,我不知道 xml 会来自哪些表,但我仍然必须基于 xml 进行插入查询。有没有可能在 SQL 中做到这一点?我可以从上面的 xml 中做出如下声明吗?
exec spx_kim @xml
exec spx_lee @xml
其中@xml 是xml 中每个kim 和lee 节点的值。
我真的很感谢你给我的每一个帮助。