这是一个名为'CARS'的示例表,它只是一个更大的表的一部分 .
MODEL ID
Ferrari 1
Mustang 2
Taurus 3
我想创建一个名为CARS_XML的新表,将每行从CARS更改为单个XML类型列,使用游标从表CARS中获取数据(而不是插入每行的值)以形成新表CARS_XML . 结果表具有 CAR
, MODEL
和 ID
的XML标记,第一个表 CARS
的值插入XML标记中的正确位置,以便来自CARS_XML的select *将如下所示:
< CAR>< MODEL>Ferrari< /MODEL>< ID>1< /ID>< /MODEL>< /CAR>
< CAR>< MODEL>Mustang< /MODEL>< ID>2< /ID>< /MODEL>< /CAR>
< CAR>< MODEL>Taurus< /MODEL>< ID>3< /ID>< /MODEL>< /CAR>
首先,我是否声明 sys.xmltype
并定义它,如果是,我该怎么做?
2 回答
为什么要将
xml
放在另一个表中,而不是在需要时从CARS
表生成xml
.之所以我说这是因为
CARS
表有来自另一个表的约束 . 你需要在该CAR_XML上复制以保持一致性 .另一个原因是无论何时将数据插入
CARS
表,都需要将其插入到CAR_XML
中 . 所以写一个函数从FLY上的CARS
表中获取数据 . 如果没有,在CARS表上创建一个触发器,在insert update delete
上,它在CAR_XML
表上执行相同的操作 .OUTPUT
我认为下面的脚本会做你想要的,虽然我不能完全检查它 . 然而,你想要做的似乎是有问题的 . 大概在未来的某个时候你将把这个xml发送到某个地方,对我来说,将数据转换为xml的最佳时间就是当你想要发送它时,而不是将它留在表中,占用你的空间数据库 . 您现在也在两个不同的地方拥有相同的数据,这通常是数据库设计中的一件坏事 .